/// <summary> /// Get a copy of the Toeplitz matrix. /// </summary> /// <returns> /// The Toeplitz matrix /// </returns> public ComplexDoubleMatrix GetMatrix() { int i; // allocate memory for the matrix ComplexDoubleMatrix tm = new ComplexDoubleMatrix(m_Order); #if MANAGED // fill lower triangle for (i = 0; i < m_Order; i++) { Array.Copy(m_LeftColumn.data, 0, tm.data[i], i, m_Order - i); } tm = tm.GetTranspose(); // fill upper triangle for (i = 0; i < m_Order - 1; i++) { Array.Copy(m_TopRow.data, 1, tm.data[i], i + 1, m_Order - i - 1); } #else int j, k; // fill lower triangle for (i = 0; i < m_Order; i++) { for (j = i, k = 0; j < m_Order; j++, k++) { tm[j, i] = m_LeftColumn[k]; } } // fill upper triangle for (i = 0; i < m_Order; i++) { for (j = i + 1, k = 1; j < m_Order; j++, k++) { tm[i, j] = m_TopRow[k]; } } #endif return(tm); }
/// <summary> /// Get a copy of the Toeplitz matrix. /// </summary> /// <returns> /// The Toeplitz matrix /// </returns> public ComplexDoubleMatrix GetMatrix() { int i; // allocate memory for the matrix ComplexDoubleMatrix tm = new ComplexDoubleMatrix(m_Order); #if MANAGED // fill lower triangle for (i = 0; i < m_Order; i++) { Array.Copy(m_LeftColumn.data, 0, tm.data[i], i, m_Order - i); } tm = tm.GetTranspose(); // fill upper triangle for (i = 0; i < m_Order - 1; i++) { Array.Copy(m_TopRow.data, 1, tm.data[i], i + 1, m_Order - i - 1); } #else int j, k; // fill lower triangle for (i = 0; i < m_Order; i++) { for (j = i, k = 0; j < m_Order; j++, k++) { tm[j, i] = m_LeftColumn[k]; } } // fill upper triangle for (i = 0; i < m_Order; i++) { for (j = i + 1, k = 1; j < m_Order; j++, k++) { tm[i, j] = m_TopRow[k]; } } #endif return tm; }
public void GetTransposeLong() { ComplexDoubleMatrix a = new ComplexDoubleMatrix(3, 2); a[0, 0] = new Complex(1); a[0, 1] = new Complex(2); a[1, 0] = new Complex(3); a[1, 1] = new Complex(4); a[2, 0] = new Complex(5); a[2, 1] = new Complex(6); ComplexDoubleMatrix b = a.GetTranspose(); Assert.AreEqual(b[0, 0], a[0, 0]); Assert.AreEqual(b[0, 1], a[1, 0]); Assert.AreEqual(b[0, 2], a[2, 0]); Assert.AreEqual(b[1, 0], a[0, 1]); Assert.AreEqual(b[1, 1], a[1, 1]); Assert.AreEqual(b[1, 2], a[2, 1]); Assert.AreEqual(b.RowLength, a.ColumnLength); Assert.AreEqual(b.ColumnLength, a.RowLength); }
public void GetTransposeSquare() { ComplexDoubleMatrix a = new ComplexDoubleMatrix(2, 2); a[0, 0] = new Complex(1); a[0, 1] = new Complex(2); a[1, 0] = new Complex(3); a[1, 1] = new Complex(4); ComplexDoubleMatrix b = a.GetTranspose(); Assert.AreEqual(b[0, 0], a[0, 0]); Assert.AreEqual(b[0, 1], a[1, 0]); Assert.AreEqual(b[1, 0], a[0, 1]); Assert.AreEqual(b[1, 1], a[1, 1]); }