/// <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);
        }
Example #2
0
		/// <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;
		}
Example #3
0
		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);
		}
Example #4
0
		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]);
		}