0

simulink udp block から配列 (byte[] データ) に udp データを受け取ります。データは int32 としてパックされているので、まずそれを解凍する必要があります。

このデータを使用できるように保存する方法がわかりません。これらのデータは位置であり、OpenGL ES を使用して視覚化したいと考えています。データを配列に保存し、次の反復で次のパケットをその配列に追加できるようにしたい、配列全体を書き換えない (ループのため)

データのサイズは今のところ 1200 * 96 です。配列は良いオプションですか?

       int j = 0 ;
  float[] bin1 = new float[(data.length/2)];
  while (j < data.length ) {
    if ( data[2*j+2] >= 0  ) {

      String unhx =(binary(data[2*j+3])+binary(data[2*j+2])+binary(data[2*j+1])+binary(data[2*j]));
      float unbin = ((float)unbinary(unhx)/100);
      bin1[j/2] = unbin;
      print(bin1[1]);
    }

    else if  ( data[2*j+2] < 0 && data[2*j+3] < 0 ) {
      data[2*j] = (byte)(-data[2*j]);
      data[2*j+1] = (byte)(-data[2*j+1]);
      String unhx =(binary(data[2*j+1])+binary(data[2*j]));
      float unbin = ((-1)*(float)unbinary(unhx)/100);
      bin1[j/2] = unbin;
      print(bin1[1]);
      }
      j = j + 2;
  }

問題は、新しいパケットが来るたびに bin1 配列全体を書き換えるということです。新しいパケットを bin1 に追加して、全体を書き換えないようにするにはどうすればよいでしょうか?

4

3 に答える 3

0

編集した質問に返信します。

Melisa、float の配列ではなく、float のリストの使用を検討することをお勧めします。そうしないと、配列のサイズを変更してコピーし、データを追加することになります。リスト/リンクされたリストには、理論的には無制限の長さがあり (実際には長さを気にする必要はありません)、フロートを追加し続けることができます。

リスト

于 2012-06-14T14:09:17.680 に答える
0

Melisa さん、while ループに入る前に配列を宣言する必要があります。ループを離れてもスコープ内に留まるようにします。これは、ループを終了した後も配列にアクセスできることを意味します。:) お役に立てれば。

于 2012-06-14T13:50:31.550 に答える
0

私がここで目にする問題の 1 つは、whileカウンターを変数として使用しているループではint j=0ありますが、カウンター変数をインクリメントしている場所ではないjため、問題になる可能性があります。

j = 0 ;
while (j < data.length){
float[] array = new float[] {myData};
j++;
}
于 2012-06-14T13:02:38.703 に答える