public void CanClearSubMatrixEx() { var dmr = new MatlabMatrixReader("./data/Matlab/sparse-small.mat"); var matrix = dmr.ReadMatrix("S"); var matrix2 = matrix.Clone(); // Zero the 40th row for (int column = 0; column < matrix.ColumnCount; column++) { matrix.At(39, column, 0.0); } matrix2.ClearRow(39); // Zero the 4th column for (int row = 0; row < matrix.RowCount; row++) { matrix.At(row, 3, 0.0); } matrix2.ClearColumn(3); // Zero submatrix rows 20..30 columns 8..10 for (int row = 19; row <= 29; row++) { for (int column = 7; column <= 9; column++) { matrix.At(row, column, 0.0); } } matrix2.ClearSubMatrix(19, 11, 7, 3); Assert.That(matrix2.Equals(matrix), Is.True); }
// [TestMethod()] public void SavitzkyGolayTest() { // int winSize = 5; // TODO: 初始化为适当的值 var target = new SavitzkyGolay(31); // TODO: 初始化为适当的值 var matReader = new MatlabMatrixReader <double>(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\X.mat"); var input = matReader.ReadMatrix(); var reader2 = new MatlabMatrixReader <double>(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\filter\out_smooth_31.mat"); var expected = reader2.ReadMatrix(); var actual = target.Process((Matrix)input, RIPP.Lib.MathLib.VectorType.Row); var writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\filter\out_smooth_31_my.mat"); writer.WriteMatrix <double>(actual, "dd"); writer.Close(); target = new SavitzkyGolay(21); actual = target.Process((Matrix)input, RIPP.Lib.MathLib.VectorType.Row); writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\filter\out_smooth_21_my.mat"); writer.WriteMatrix <double>(actual, "dd"); writer.Close(); // Assert.Inconclusive("验证此测试方法的正确性。"); }
public void CanWriteMatrices() { Matrix mat1 = new DenseMatrix(5, 3); for (var i = 0; i < mat1.ColumnCount; i++) { mat1[i, i] = i + .1f; } Matrix mat2 = new DenseMatrix(4, 5); for (var i = 0; i < mat2.RowCount; i++) { mat2[i, i] = i + .1f; } Matrix mat3 = new SparseMatrix(5, 4); for (var i = 0; i < mat3.ColumnCount; i++) { mat3[i, i] = i + .1f; } Matrix mat4 = new SparseMatrix(3, 5); for (var i = 0; i < mat4.RowCount; i++) { mat4[i, i] = i + .1f; } var write = new[] { mat1, mat2, mat3, mat4 }; var names = new[] { "mat1", "dense_matrix_2", "s1", "sparse2" }; if (File.Exists("test.mat")) { File.Delete("test.mat"); } var writer = new MatlabMatrixWriter("test.mat"); writer.WriteMatrices(write, names); writer.Dispose(); var reader = new MatlabMatrixReader("test.mat"); var read = reader.ReadMatrices(names); Assert.AreEqual(write.Length, read.Count); for (var i = 0; i < write.Length; i++) { var w = write[i]; var r = read[names[i]]; Assert.AreEqual(w.RowCount, r.RowCount); Assert.AreEqual(w.ColumnCount, r.ColumnCount); Assert.IsTrue(w.Equals(r)); } }
public void CanReadNamedSparseMatrix() { var dmr = new MatlabMatrixReader("./data/Matlab/sparse-small.mat"); var matrix = dmr.ReadMatrix("S"); Assert.AreEqual(100, matrix.RowCount); Assert.AreEqual(100, matrix.ColumnCount); Assert.AreEqual(typeof(SparseMatrix), matrix.GetType()); AssertHelpers.AlmostEqual(17.6385090630805f, matrix.FrobeniusNorm(), 6); }
public void CanWriteDoubleMatrices() { var mat1 = new LinearAlgebra.Double.DenseMatrix(5, 3); for (var i = 0; i < mat1.ColumnCount; i++) { mat1[i, i] = i + .1; } var mat2 = new LinearAlgebra.Double.DenseMatrix(4, 5); for (var i = 0; i < mat2.RowCount; i++) { mat2[i, i] = i + .1; } var mat3 = new LinearAlgebra.Double.SparseMatrix(5, 4); mat3[0, 0] = 1.1; mat3[0, 2] = 2.2; mat3[4, 3] = 3.3; var mat4 = new LinearAlgebra.Double.SparseMatrix(3, 5); mat4[0, 0] = 1.1; mat4[0, 2] = 2.2; mat4[2, 4] = 3.3; var write = new LinearAlgebra.Double.Matrix[] { mat1, mat2, mat3, mat4 }; var names = new[] { "mat1", "dense_matrix_2", "s1", "sparse2" }; if (File.Exists("testd.mat")) { File.Delete("testd.mat"); } var writer = new MatlabMatrixWriter("testd.mat"); writer.WriteMatrices(write, names); writer.Dispose(); var reader = new MatlabMatrixReader <double>("testd.mat"); var read = reader.ReadMatrices(names); Assert.AreEqual(write.Length, read.Count); for (var i = 0; i < write.Length; i++) { var w = write[i]; var r = read[names[i]]; Assert.AreEqual(w.RowCount, r.RowCount); Assert.AreEqual(w.ColumnCount, r.ColumnCount); Assert.IsTrue(w.Equals(r)); } }
public void CanReadFirstMatrix() { var dmr = new MatlabMatrixReader("./data/Matlab/A.mat"); var matrix = dmr.ReadMatrix(); Assert.AreEqual(100, matrix.RowCount); Assert.AreEqual(100, matrix.ColumnCount); Assert.AreEqual(typeof(DenseMatrix), matrix.GetType()); AssertHelpers.AlmostEqual(100.108979553704, matrix.FrobeniusNorm(), 5); }
public void CanReadNamedMatrix() { var dmr = new MatlabMatrixReader("./data/Matlab/collection.mat"); var matrices = dmr.ReadMatrices(new[] { "Ad" }); Assert.AreEqual(1, matrices.Length); Assert.AreEqual(100, matrices[0].RowCount); Assert.AreEqual(100, matrices[0].ColumnCount); AssertHelpers.AlmostEqual(100.431635988639f, matrices[0].FrobeniusNorm(), 6); Assert.AreEqual(typeof(DenseMatrix), matrices[0].GetType()); }
public void CanReadAllMatrices() { var dmr = new MatlabMatrixReader("./data/Matlab/collection.mat"); var matrices = dmr.ReadMatrices(); Assert.AreEqual(30, matrices.Length); foreach (var matrix in matrices) { Assert.AreEqual(typeof(DenseMatrix), matrix.GetType()); } }
public void CanReadNonComplex32NamedSparseMatrix() { var dmr = new MatlabMatrixReader <Complex32>("./data/Matlab/sparse-small.mat"); var matrix = dmr.ReadMatrix("S"); Assert.AreEqual(100, matrix.RowCount); Assert.AreEqual(100, matrix.ColumnCount); Assert.AreEqual(typeof(LinearAlgebra.Complex32.SparseMatrix), matrix.GetType()); AssertHelpers.AlmostEqual(17.6385090630805, matrix.FrobeniusNorm().Real, 6); }
public void CanReadNamedMatrices() { var dmr = new MatlabMatrixReader("./data/Matlab/collection.mat"); var matrices = dmr.ReadMatrices(new[] { "Ad", "Au64" }); Assert.AreEqual(2, matrices.Count); foreach (var matrix in matrices) { Assert.AreEqual(typeof(DenseMatrix), matrix.Value.GetType()); } }
public void CanReadAllMatrices() { var dmr = new MatlabMatrixReader<double>("./data/Matlab/collection.mat"); var matrices = dmr.ReadMatrices(); Assert.AreEqual(30, matrices.Count); foreach (var matrix in matrices) { Assert.AreEqual(typeof(LinearAlgebra.Double.DenseMatrix), matrix.Value.GetType()); } }
public void CanReadNamedSparseMatrix() { var dmr = new MatlabMatrixReader("./data/Matlab/sparse-small.mat"); var matrix = dmr.ReadMatrix("S"); Assert.AreEqual(100, matrix.RowCount); Assert.AreEqual(100, matrix.ColumnCount); Assert.AreEqual(typeof(SparseMatrix), matrix.GetType()); AssertHelpers.AlmostEqual(17.6385090630805f, matrix.FrobeniusNorm(), 6); }
public void CanReadNonComplexFirstMatrix() { var dmr = new MatlabMatrixReader <Complex>("./data/Matlab/A.mat"); var matrix = dmr.ReadMatrix(); Assert.AreEqual(100, matrix.RowCount); Assert.AreEqual(100, matrix.ColumnCount); Assert.AreEqual(typeof(LinearAlgebra.Complex.DenseMatrix), matrix.GetType()); AssertHelpers.AlmostEqual(100.108979553704, matrix.FrobeniusNorm(), 13); }
public void CanReadFirstMatrix() { var dmr = new MatlabMatrixReader("./data/Matlab/A.mat"); var matrix = dmr.ReadMatrix(); Assert.AreEqual(100, matrix.RowCount); Assert.AreEqual(100, matrix.ColumnCount); Assert.AreEqual(typeof(DenseMatrix), matrix.GetType()); AssertHelpers.AlmostEqual(100.108979553704f, matrix.FrobeniusNorm(), 6); }
public void CanReadNonComplexAllMatrices() { var dmr = new MatlabMatrixReader("./data/Matlab/collection.mat"); var matrices = dmr.ReadMatrices(); Assert.AreEqual(30, matrices.Count); foreach (var matrix in matrices) { Assert.AreEqual(typeof(DenseMatrix), matrix.Value.GetType()); } }
public void CanReadNamedMatrices() { var dmr = new MatlabMatrixReader("./data/Matlab/collection.mat"); var matrices = dmr.ReadMatrices(new[] { "Ad", "Au64" }); Assert.AreEqual(2, matrices.Count); foreach (var matrix in matrices) { Assert.AreEqual(typeof(DenseMatrix), matrix.Value.GetType()); } }
public void CanReadAllMatrices() { var dmr = new MatlabMatrixReader <double>("./data/Matlab/collection.mat"); var matrices = dmr.ReadMatrices(); Assert.AreEqual(30, matrices.Count); foreach (var matrix in matrices) { Assert.AreEqual(typeof(LinearAlgebra.Double.DenseMatrix), matrix.Value.GetType()); } }
public void CanReadNamedMatrix() { var dmr = new MatlabMatrixReader("./data/Matlab/collection.mat"); var matrices = dmr.ReadMatrices(new[] { "Ad" }); Assert.AreEqual(1, matrices.Count); var ad = matrices["Ad"]; Assert.AreEqual(100, ad.RowCount); Assert.AreEqual(100, ad.ColumnCount); AssertHelpers.AlmostEqual(100.431635988639f, ad.FrobeniusNorm(), 6); Assert.AreEqual(typeof(DenseMatrix), ad.GetType()); }
public void CanReadSparseComplexAllMatrices() { var dmr = new MatlabMatrixReader("./data/Matlab/sparse_complex.mat"); var matrices = dmr.ReadMatrices(); Assert.AreEqual(3, matrices.Count); foreach (var matrix in matrices) { Assert.AreEqual(typeof(SparseMatrix), matrix.Value.GetType()); } var a = matrices["sa"]; Assert.AreEqual(100, a.RowCount); Assert.AreEqual(100, a.ColumnCount); AssertHelpers.AlmostEqual(13.223654390985379, a.L2Norm(), 15); }
public void CanReadComplexAllMatrices() { var dmr = new MatlabMatrixReader("./data/Matlab/complex.mat"); var matrices = dmr.ReadMatrices(); Assert.AreEqual(3, matrices.Count); foreach (var matrix in matrices) { Assert.AreEqual(typeof(DenseMatrix), matrix.Value.GetType()); } var a = matrices["a"]; Assert.AreEqual(100, a.RowCount); Assert.AreEqual(100, a.ColumnCount); AssertHelpers.AlmostEqual(27.232498979698409, a.L2Norm(), 15); }
public void CanReadComplexAllMatrices() { var dmr = new MatlabMatrixReader("./data/Matlab/complex.mat"); var matrices = dmr.ReadMatrices(); Assert.AreEqual(3, matrices.Count); foreach (var matrix in matrices) { Assert.AreEqual(typeof(DenseMatrix), matrix.Value.GetType()); } var a = matrices["a"]; Assert.AreEqual(100, a.RowCount); Assert.AreEqual(100, a.ColumnCount); AssertHelpers.AlmostEqual(27.232498979698409, a.L2Norm().Real, 6); }
public void CanReadSparseComplexAllMatrices() { var dmr = new MatlabMatrixReader("./data/Matlab/sparse_complex.mat"); var matrices = dmr.ReadMatrices(); Assert.AreEqual(3, matrices.Count); foreach (var matrix in matrices) { Assert.AreEqual(typeof(SparseMatrix), matrix.Value.GetType()); } var a = matrices["sa"]; Assert.AreEqual(100, a.RowCount); Assert.AreEqual(100, a.ColumnCount); AssertHelpers.AlmostEqual(13.223654390985379, a.L2Norm().Real, 7); }
// [TestMethod()] public void MSCTest() { // int winSize = 5; // TODO: 初始化为适当的值 var target = new MSC(); // TODO: 初始化为适当的值 var matReader = new MatlabMatrixReader <double>(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\X.mat"); var input = matReader.ReadMatrix(); var actual = target.Process((Matrix)input, RIPP.Lib.MathLib.VectorType.Row); var writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\filter\out_msc_my.mat"); writer.WriteMatrix <double>(actual, "dd"); writer.Close(); writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\filter\out_msc_my_m.mat"); writer.WriteMatrix <double>(target.Mean.ToRowMatrix(), "m"); writer.Close(); //测试按列来 var input2 = input.Transpose(); var target2 = new MSC(); actual = target2.Process((Matrix)input2, RIPP.Lib.MathLib.VectorType.Column); writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\filter\out_msc_myColumn.mat"); writer.WriteMatrix <double>(actual, "dColumn"); writer.Close(); writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\filter\out_msc_my_mColumn.mat"); writer.WriteMatrix <double>(target.Mean.ToRowMatrix(), "mColumn"); writer.Close(); // var target3 = new MSC(); actual = target3.ProcessForPrediction((Matrix)input, RIPP.Lib.MathLib.VectorType.Row, target.Mean); writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\filter\out_msc_my_ForPrediction.mat"); writer.WriteMatrix <double>(actual, "dd"); writer.Close(); // Assert.Inconclusive("验证此测试方法的正确性。"); }
//[TestMethod] public void AtScaleTest() { var target = new AtScale(); // TODO: 初始化为适当的值 var matReader = new MatlabMatrixReader <double>(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\X.mat"); var input = matReader.ReadMatrix(); var actual = target.Process((Matrix)input, RIPP.Lib.MathLib.VectorType.Row); var writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\filter\out_atscale_my.mat"); writer.WriteMatrix <double>(actual, "dd"); writer.Close(); var o2 = target.Process((Matrix)input.Transpose(), RIPP.Lib.MathLib.VectorType.Column); var writer2 = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\filter\out_atscale_my2.mat"); writer2.WriteMatrix <double>(o2, "dd2"); writer.Close(); }
//[TestMethod()] public void DetrendTest() { // int winSize = 5; // TODO: 初始化为适当的值 var target = new Detrend(); // TODO: 初始化为适当的值 var matReader = new MatlabMatrixReader <double>(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\X.mat"); var input = matReader.ReadMatrix(); var actual = target.Process((Matrix)input, RIPP.Lib.MathLib.VectorType.Row); var writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\filter\out_detrend_my.mat"); writer.WriteMatrix <double>(actual, "dd"); writer.Close(); var dd2 = target.Process((Matrix)input.Transpose(), RIPP.Lib.MathLib.VectorType.Column); writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\filter\out_detrend_myColumn.mat"); writer.WriteMatrix <double>(actual, "dd2"); writer.Close(); }
// //编写测试时,还可使用以下特性: // //使用 ClassInitialize 在运行类中的第一个测试前先运行代码 //[ClassInitialize()] //public static void MyClassInitialize(TestContext testContext) //{ //} // //使用 ClassCleanup 在运行完类中的所有测试后再运行代码 //[ClassCleanup()] //public static void MyClassCleanup() //{ //} // //使用 TestInitialize 在运行每个测试前先运行代码 //[TestInitialize()] //public void MyTestInitialize() //{ //} // //使用 TestCleanup 在运行完每个测试后运行代码 //[TestCleanup()] //public void MyTestCleanup() //{ //} // #endregion /// <summary> ///Compute 的测试 ///</summary> // [TestMethod()] public void Deriate1Test() { int winSize = 5; // TODO: 初始化为适当的值 Deriate1 target = new Deriate1(winSize); // TODO: 初始化为适当的值 var matReader = new MatlabMatrixReader <double>(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\X.mat"); var input = matReader.ReadMatrix(); var reader2 = new MatlabMatrixReader <double>(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\filter\out_deriate1_5.mat"); var expected = reader2.ReadMatrix(); var actual = target.Process((Matrix)input, RIPP.Lib.MathLib.VectorType.Row); var writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\filter\out_deriate1_5_my.mat"); writer.WriteMatrix <double>(actual, "dd"); writer.Close(); //Assert.Inconclusive("验证此测试方法的正确性。"); }
// [TestMethod()] public void NormPathLengthTest() { var target = new NormPathLength(); // TODO: 初始化为适当的值 var matReader = new MatlabMatrixReader <double>(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\X.mat"); var input = matReader.ReadMatrix(); var actual = target.Process((Matrix)input, RIPP.Lib.MathLib.VectorType.Row); var writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\filter\out_normpathlength_my.mat"); writer.WriteMatrix <double>(actual, "dd"); writer.Close(); writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\filter\out_normpathlength_mx_my.mat"); writer.WriteMatrix <double>(target.Mean.ToColumnMatrix(), "mxmy"); writer.Close(); var Scale = target.Scale.ToColumnMatrix().Clone(); writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\filter\out_normpathlength_sd_my.mat"); writer.WriteMatrix <double>(Scale, "sdmy"); writer.Close(); }
public void CanReadFloatNamedMatrix() { var dmr = new MatlabMatrixReader<float>("./data/Matlab/collection.mat"); var matrices = dmr.ReadMatrices(new[] { "Ad" }); Assert.AreEqual(1, matrices.Count); var ad = matrices["Ad"]; Assert.AreEqual(100, ad.RowCount); Assert.AreEqual(100, ad.ColumnCount); AssertHelpers.AlmostEqual(100.431635988639f, ad.FrobeniusNorm(), 6); Assert.AreEqual(typeof(LinearAlgebra.Single.DenseMatrix), ad.GetType()); }
public void CanReadNonComplex32FirstMatrix() { var dmr = new MatlabMatrixReader<Complex32>("./data/Matlab/A.mat"); var matrix = dmr.ReadMatrix(); Assert.AreEqual(100, matrix.RowCount); Assert.AreEqual(100, matrix.ColumnCount); Assert.AreEqual(typeof(LinearAlgebra.Complex32.DenseMatrix), matrix.GetType()); AssertHelpers.AlmostEqual(100.108979553704, matrix.FrobeniusNorm(), 6); }
public void CanReadNonComplexNamedMatrix() { var dmr = new MatlabMatrixReader("./data/Matlab/collection.mat"); var matrices = dmr.ReadMatrices(new[] { "Ad" }); Assert.AreEqual(1, matrices.Count); var ad = matrices["Ad"]; Assert.AreEqual(100, ad.RowCount); Assert.AreEqual(100, ad.ColumnCount); AssertHelpers.AlmostEqual(100.431635988639, ad.FrobeniusNorm(), 13); Assert.AreEqual(typeof(DenseMatrix), ad.GetType()); }
// [TestMethod] public void SpectraFitTest() { var matReader = new MatlabMatrixReader <double>(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\cx.mat"); var cx = matReader.ReadMatrix(); matReader = new MatlabMatrixReader <double>(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\vx.mat"); var vx = matReader.ReadMatrix(); var f1 = new Sgdiff(); f1.P = 2; var cx1 = f1.Process((Matrix)cx); var writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\fit\cx1.mat"); writer.WriteMatrix <double>(cx1, "cx1"); writer.Close(); var f2 = new SavitzkyGolay(5); var cx2 = f2.Process((Matrix)cx1); writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\fit\cx2.mat"); writer.WriteMatrix <double>(cx2, "cx2"); writer.Close(); var f3 = new VarRegionManu(); f3.Xaxis = new DenseVector(cx.RowCount); for (int i = 1; i <= cx.RowCount; i++) { f3.Xaxis[i - 1] = i; } var a = f3.Argus; a["Xaxis"].Value = f3.Xaxis; f3.XaxisRegion = new System.Collections.Generic.List <RegionPoint>(); f3.XaxisRegion.Add(new RegionPoint(131, 314)); f3.XaxisRegion.Add(new RegionPoint(468, 677)); a["XaxisRegion"].Value = f3.XaxisRegion; f3.Argus = a; var lst = new System.Collections.Generic.List <Vector>(); for (int i = 0; i < cx2.ColumnCount; i++) { lst.Add(f3.VarProcess((Vector)cx2.Column(i))); } var cx3 = new DenseMatrix(lst[0].Count, cx2.ColumnCount); for (int i = 0; i < cx2.ColumnCount; i++) { cx3.SetColumn(i, lst[i]); } writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\fit\cx3.mat"); writer.WriteMatrix <double>(cx3, "cx3"); writer.Close(); var f4 = new NormPathLength(); var cx4 = f4.Process(cx3); writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\fit\cx4.mat"); writer.WriteMatrix <double>(cx4, "cx4"); writer.Close(); matReader = new MatlabMatrixReader <double>(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\fit\mcx4.mat"); cx4 = (Matrix)matReader.ReadMatrix(); var fitr = new DenseMatrix(cx4.ColumnCount - 1, cx4.ColumnCount); for (int i = 0; i < cx4.ColumnCount; i++) { var subm = new DenseMatrix(cx4.RowCount, cx4.ColumnCount - 1); int tag = 0; for (int k = 0; k < cx4.ColumnCount; k++) { if (k == i) { continue; } subm.SetColumn(tag, cx4.Column(k)); tag++; } var fr = SpectraFit.Fit((Matrix)subm, (Vector)cx4.Column(i)); fitr.SetColumn(i, fr); } writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\fit\fitr.mat"); writer.WriteMatrix <double>(fitr, "fitr"); writer.Close(); }
//[TestMethod] public void PLS1Test() { var matReader = new MatlabMatrixReader <double>(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\pls\x.mat"); var X = matReader.ReadMatrix(); matReader = new MatlabMatrixReader <double>(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\pls\y.mat"); var Y = matReader.ReadMatrix().Row(0); var pls = new PLS1SubModel(); pls.MaxFactor = 10; pls.Train((Matrix)X, (Vector)Y); var writer2 = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\pls\out_pls_Weights.mat"); writer2.WriteMatrix <double>(pls.Weights, "w"); writer2.Close(); writer2 = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\pls\out_pls_Loads.mat"); writer2.WriteMatrix <double>(pls.Loads, "l"); writer2.Close(); writer2 = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\pls\out_pls_Scores.mat"); writer2.WriteMatrix <double>(pls.Scores, "s"); writer2.Close(); writer2 = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\pls\out_pls_Score_Length.mat"); writer2.WriteMatrix <double>(pls.Score_Length.ToRowMatrix(), "sle"); writer2.Close(); writer2 = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\pls\out_pls_Bias.mat"); writer2.WriteMatrix <double>(pls.Bias.ToColumnMatrix(), "Bias"); writer2.Close(); //var yLast = new DenseMatrix(pls.MaxFactor, X.ColumnCount); //for (int i = 0; i < X.ColumnCount; i++) //{ // yLast.SetColumn(i, pls.Predict((Vector)X.Column(i)).YLast); //} //writer2 = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\pls\out_pls_yLast.mat"); //writer2.WriteMatrix<double>(yLast, "yLast"); //writer2.Close(); //CV var lst = new List <PLS1SubResult>(); for (int i = 0; i < X.ColumnCount; i++) { var x = new DenseMatrix(X.RowCount, X.ColumnCount - 1); var y = new DenseVector(X.ColumnCount - 1); int c = 0; for (int k = 0; k < X.ColumnCount; k++) { if (i == k) { continue; } x.SetColumn(c, X.Column(k)); y[c] = Y[k]; c++; } var z = X.Column(i); pls = new PLS1SubModel(); pls.MaxFactor = 10; pls.Train((Matrix)x, (Vector)y); lst.Add(pls.Predict((Vector)z)); } var YLast = new DenseMatrix(X.ColumnCount, 10); for (int i = 0; i < lst.Count; i++) { YLast.SetRow(i, lst[i].YLast); } writer2 = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\pls\out_pls_yLast.mat"); writer2.WriteMatrix <double>(YLast, "yLast"); writer2.Close(); }
public void CanClearSubMatrixEx() { var dmr = new MatlabMatrixReader("./data/Matlab/sparse-small.mat"); var matrix = dmr.ReadMatrix("S"); var matrix2 = matrix.Clone(); // Zero the 40th row for (int column = 0; column < matrix.ColumnCount; column++) { matrix.At(39, column, 0.0); } matrix2.ClearRow(39); // Zero the 4th column for (int row = 0; row < matrix.RowCount; row++) { matrix.At(row, 3, 0.0); } matrix2.ClearColumn(3); // Zero submatrix rows 20..30 columns 8..10 for (int row = 19; row <= 29; row++) { for (int column = 7; column <= 9; column++) { matrix.At(row, column, 0.0); } } matrix2.ClearSubMatrix(19, 11, 7, 3); Assert.That(matrix2.Equals(matrix), Is.True); }
public void CanReadNonComplex32NamedSparseMatrix() { var dmr = new MatlabMatrixReader<Complex32>("./data/Matlab/sparse-small.mat"); var matrix = dmr.ReadMatrix("S"); Assert.AreEqual(100, matrix.RowCount); Assert.AreEqual(100, matrix.ColumnCount); Assert.AreEqual(typeof(LinearAlgebra.Complex32.SparseMatrix), matrix.GetType()); AssertHelpers.AlmostEqual(17.6385090630805, matrix.FrobeniusNorm().Real, 6); }
public void CanWriteMatrices() { Matrix mat1 = new DenseMatrix(5, 3); for (var i = 0; i < mat1.ColumnCount; i++) { mat1[i, i] = new Complex32(i + .1f, i + .1f); } Matrix mat2 = new DenseMatrix(4, 5); for (var i = 0; i < mat2.RowCount; i++) { mat2[i, i] = new Complex32(i + .1f, i + .1f); } Matrix mat3 = new SparseMatrix(5, 4); for (var i = 0; i < mat3.ColumnCount; i++) { mat3[i, i] = new Complex32(i + .1f, i + .1f); } Matrix mat4 = new SparseMatrix(3, 5); for (var i = 0; i < mat4.RowCount; i++) { mat4[i, i] = new Complex32(i + .1f, i + .1f); } var write = new[] { mat1, mat2, mat3, mat4 }; var names = new[] { "mat1", "dense_matrix_2", "s1", "sparse2" }; if (File.Exists("test.mat")) { File.Delete("test.mat"); } var writer = new MatlabMatrixWriter("test.mat"); writer.WriteMatrices(write, names); writer.Dispose(); var reader = new MatlabMatrixReader("test.mat"); var read = reader.ReadMatrices(names); Assert.AreEqual(write.Length, read.Count); for (var i = 0; i < write.Length; i++) { var w = write[i]; var r = read[names[i]]; Assert.AreEqual(w.RowCount, r.RowCount); Assert.AreEqual(w.ColumnCount, r.ColumnCount); Assert.IsTrue(w.Equals(r)); } }
public void CanWriteComplex32Matrices() { var mat1 = new LinearAlgebra.Complex32.DenseMatrix(5, 3); for (var i = 0; i < mat1.ColumnCount; i++) { mat1[i, i] = new Complex32(i + .1f, i + .1f); } var mat2 = new LinearAlgebra.Complex32.DenseMatrix(4, 5); for (var i = 0; i < mat2.RowCount; i++) { mat2[i, i] = new Complex32(i + .1f, i + .1f); } var mat3 = new LinearAlgebra.Complex32.SparseMatrix(5, 4); mat3[0, 0] = new Complex32(1.1f, 1.1f); mat3[0, 2] = new Complex32(2.2f, 2.2f); mat3[4, 3] = new Complex32(3.3f, 3.3f); var mat4 = new LinearAlgebra.Complex32.SparseMatrix(3, 5); mat4[0, 0] = new Complex32(1.1f, 1.1f); mat4[0, 2] = new Complex32(2.2f, 2.2f); mat4[2, 4] = new Complex32(3.3f, 3.3f); var write = new LinearAlgebra.Complex32.Matrix[] { mat1, mat2, mat3, mat4 }; var names = new[] { "mat1", "dense_matrix_2", "s1", "sparse2" }; if (File.Exists("testc.mat")) { File.Delete("testc.mat"); } var writer = new MatlabMatrixWriter("testc.mat"); writer.WriteMatrices(write, names); writer.Dispose(); var reader = new MatlabMatrixReader<Complex32>("testc.mat"); var read = reader.ReadMatrices(names); Assert.AreEqual(write.Length, read.Count); for (var i = 0; i < write.Length; i++) { var w = write[i]; var r = read[names[i]]; Assert.AreEqual(w.RowCount, r.RowCount); Assert.AreEqual(w.ColumnCount, r.ColumnCount); Assert.IsTrue(w.Equals(r)); } }