2011-03-16 4 views
0

I am following Matlab's example à courir en C# mais comme je suis nouveau à C#, je voudrais d'imprimer les résultats de System.Array prresult = new double[4]; ici est le code C# qui utilise Matlab:C# appelle 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); 

     } 
    } 
} 

J'ai ajouté ces lignes avant et après comme:

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); 

Je reçois dans la console:

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

Comment imprimer sur la console les bons résultats?

Répondre

1

Quelque chose comme ceci:

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

est ici une fonction de sortie des éléments du tableau dans la syntaxe de 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 + "]"); 
} 

Ainsi, il peut être utilisé comme ceci:

PrintArray(prresult); 
+0

l'article est de type? ... – cMinor

+0

il est 'double' droit? – cMinor

+0

J'ai corrigé le code – Max