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);
        }
Ejemplo n.º 2
0
        // [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("验证此测试方法的正确性。");
        }
Ejemplo n.º 3
0
        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));
            }
        }
Ejemplo n.º 4
0
 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);
 }
Ejemplo n.º 5
0
        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);
 }
Ejemplo n.º 7
0
 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());
 }
Ejemplo n.º 8
0
 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());
     }
 }
Ejemplo n.º 9
0
        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());
     }
 }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
        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());
            }
        }
Ejemplo n.º 16
0
        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());
            }
        }
Ejemplo n.º 17
0
        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());
            }
        }
Ejemplo n.º 18
0
        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());
        }
Ejemplo n.º 19
0
        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);
        }
Ejemplo n.º 20
0
        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);
        }
Ejemplo n.º 21
0
        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);
        }
Ejemplo n.º 22
0
        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);
        }
Ejemplo n.º 23
0
        // [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("验证此测试方法的正确性。");
        }
Ejemplo n.º 24
0
        //[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();
        }
Ejemplo n.º 25
0
        //[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();
        }
Ejemplo n.º 26
0
        //
        //编写测试时,还可使用以下特性:
        //
        //使用 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("验证此测试方法的正确性。");
        }
Ejemplo n.º 27
0
        // [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);
 }
Ejemplo n.º 30
0
 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());
 }
Ejemplo n.º 31
0
        //  [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();
        }
Ejemplo n.º 32
0
        //[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();
        }
Ejemplo n.º 33
0
        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);
 }
Ejemplo n.º 35
0
        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));
            }
        }