2011-03-16 64 views
0

I am following Matlab's example在C#中运行,但因为我是新来的C#,我想打印的System.Array prresult = new double[4];结果这里是使用MATLAB的C#代码:C#调用MATLAB

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
namespace ConsoleApplication1{ 
class Class1{ 
    [STAThread] 
    static void Main(string[] args){ 
     MLApp.MLAppClass matlab = new MLApp.MLAppClass(); 
     System.Array pr = new double[4]; 
     pr.SetValue(11,0); 
     pr.SetValue(12,1); 
     pr.SetValue(13,2); 
     pr.SetValue(14,3); 
     System.Array pi = new double[4]; 
     pi.SetValue(1,0); 
     pi.SetValue(2,1); 
     pi.SetValue(3,2); 
     pi.SetValue(4,3); 
     matlab.PutFullMatrix("a", "base", pr, pi); 
     System.Array prresult = new double[4]; 
     System.Array piresult = new double[4]; 
     matlab.GetFullMatrix("a", "base", ref prresult, ref piresult); 

     } 
    } 
} 

我之前添加这些行和之后,如:

System.Array prresult = new double[4]; 
    System.Array piresult = new double[4]; 
    Console.Write(prresult); 
    Console.Write(piresult); 
    matlab.GetFullMatrix("a", "base", ref prresult, ref piresult); 
    Console.Write(prresult); 
    Console.Write(piresult); 

我收到的控制台:

System.Double[]System.Double[]System.Double[]System.Double[]。 。 。

如何在控制台上打印正确的结果?

回答

1

像这样:

foreach(var item in prresult) 
{ 
    Console.Write(item.ToString() + ", "); 
} 

下面就来输出的功能在MATLAB的语法的数组元素:因此,它可以像这样使用

static void PrintArray(double[] aArray) 
{ 
    var str = ""; 
    for (int index = 0; index < aArray.Length; index++) 
    { 
     var item = aArray[index]; 
     str += item.ToString(); 
     if (index < aArray.Length - 1) 
      str += ", "; 
    } 
    Console.WriteLine("[" + str + "]"); 
} 

PrintArray(prresult); 
+0

项目是类型?... – cMinor 2011-03-16 01:03:15

+0

它是“双”的权利? – cMinor 2011-03-16 01:09:37

+0

我已更正了代码 – Max 2011-03-16 01:10:42