public void TestSubMatrix() { Matrix<float> mat = new Matrix<float>(30, 40); mat.SetRandUniform(new MCvScalar(0), new MCvScalar(255)); Matrix<float> submat = mat.GetSubRect(new Rectangle(5, 5, 15, 15)); for (int i = 0; i < 15; i++) for (int j = 0; j < 15; j++) EmguAssert.AreEqual(mat[i + 5, j + 5], submat[i, j]); Matrix<float> secondRow = mat.GetRow(1); for (int i = 0; i < mat.Cols; i++) { EmguAssert.AreEqual(mat[1, i], secondRow[0, i]); } Matrix<float> thirdCol = mat.GetCol(2); for (int i = 0; i < mat.Rows; i++) { EmguAssert.AreEqual(mat[i, 2], thirdCol[i, 0]); } Matrix<float> diagonal = mat.GetDiag(); for (int i = 0; i < Math.Min(mat.Rows, mat.Cols); i++) { EmguAssert.AreEqual(diagonal[i, 0], mat[i, i]); } }
public void TestGetDiagColRow() { Matrix<double> m = new Matrix<double>(new double[,] { {1, 2}, {3, 4}}); Matrix<double> diag = m.GetDiag(); EmguAssert.IsTrue(diag[0, 0] == 1); EmguAssert.IsTrue(diag[1, 0] == 4); EmguAssert.IsTrue(diag.Sum == m.Trace.V0); Matrix<double> col1 = m.GetCol(1); EmguAssert.IsTrue(col1[0, 0] == 2); EmguAssert.IsTrue(col1[1, 0] == 4); EmguAssert.IsTrue(col1.Sum == 2 + 4); Matrix<double> row1 = m.GetRow(1); EmguAssert.IsTrue(row1[0, 0] == 3); EmguAssert.IsTrue(row1[0, 1] == 4); EmguAssert.IsTrue(row1.Sum == 3 + 4); }