2016-05-29 6 views
0

私はC#Visual Studioに次のコードを書いています.COMサーバーからMATLABを使ってデータをプロットしようとしています。私は多少は可能ですが、コードを使用すると、MATLABの出力コンソールには変数 "numbers"の最後の値しか表示されず、プロットするとすべての以前の値が上書きされます。また、どのように私は可変サイズの動的にすることができますか?私の目標は、リアルタイムでデータをプロットすることです。どんな提案もありがとう!C#My ArrayListには最後の項目しか含まれていません

 using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Threading.Tasks; 

    namespace ConsoleApplication4 
     { 
     class Program 
     { 
    static void Main(string[] args) 
    { 
     ////// Create the MATLAB instance 
     MLApp.MLApp matlab = new MLApp.MLApp(); 

     for (int j = 1; j <= 10; j++) 
     { 
      int[] numbers = new int[11]; 
      numbers[j] = j * 15; 
      matlab.Execute("numbers"); 
      matlab.PutWorkspaceData("A", "base",numbers); 
      matlab.Execute("plot(A);"); 
     } 
     // //Console.WriteLine(j*15); 
     //} 
     //Console.ReadKey(); 
    } 
} 

}

UPDATE:

var numbers = new List<int>(); 
     for (int j = 1; j <= 10; j++) 
     { 
      //numbers[j] = j * 15; 
      int val= j * 15; 
      numbers.Add(val); 
      var array = numbers.ToArray(); 
      matlab.Execute("array"); 
      matlab.PutWorkspaceData("A", "base", array); 
      matlab.Execute("plot(A);"); 
     } 

答えて

1

は、ループ内numbersを初期化しないでください。それは毎回新しいインスタンスを作成します。

これを試してみてください:

int[] numbers = new int[11]; 
for (int j = 1; j <= 10; j++){ 
    numbers[j] = j * 15; 
    //double vIn = Convert.ToDouble(numbers); 
    matlab.Execute("numbers"); 
    matlab.PutWorkspaceData("A", "base",numbers); 
    matlab.Execute("plot(A);"); 
} 

UPDATE:

が動的サイズの配列を作るために。 List<>を使用してください。 次に、あなたのようなループを変更する必要があります。

List<int> numbers = new List<int>(); 
for (int j = 1; j <= 10; j++){ 
    int val = j * 15; 
    numbers.Add(val); 
    .... 
} 
+0

はい@ Sabi3023が既に提供した後、それを配置する必要があります溶液。この行でどのように配列のサイズを任意または動的にすることができるか知りたいですか? int [] numbers = new int [11];すなわち、 11を動的値 – DashD

+0

@ DashDに変更してください。回答の更新を参照してください。 – Sajal

+0

はい、以前は自分自身で試してみましたが、エラーになります。 – DashD

1

あなたがループ

のための前にこのライン int[] numbers = new int[11]; を移動し、

'MLApp.MLApp matlab = new MLApp.MLApp();' 
+0

それは働いた!どうもありがとうございます。私はC#で初めてコーディングしているので、大きな学習曲線です。 – DashD

関連する問題