Home
Support
Microsoft Visual Studio .NET (Visual C# や Visual Basic .NET) で、配列の一部を抽出するには、どうすればよいですか。
Microsoft Visual Studio .NET (Visual C# や Visual Basic .NET) で、配列の一部を抽出するには、どうすればよいですか。
使用ソフトウェア:
使用ソフトウェア・バージョン: N/A
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア: N/A
問題: 複数チャンネル集録する DAQmx のサンプルコードの中には、二次元配列があります。この配列から、任意のチャンネルの配列を取り出すには、どうすればよいですか。
解決策: Buffer
クラス(詳細は下記リンクを参照)で実現できます。double や int などの配列を効率的に複製できます。二次元配列から任意のチャンネルを取り出す関数のコードの例は、以下のとおりです。
[C#]
private double[] arraySubset(double[,] array, int row) {if
(array == null) //配列は空か?throw new
ArgumentNullException();
//配列の次元と、大きさを確認
if ( array.Rank < 2 || row < 0 || row > array.GetLength(0) )
throw new ArgumentException();
//列数を取得
int column = array.GetLength(1);
//新しい配列を確保
double[] data = new double[column];
//要素数を取得。double 型では要素あたり 8 バイト
int elementSize = System.Runtime.InteropServices.Marshal.SizeOf(array.GetType().GetElementType());
//元の配列からコピー
Buffer.BlockCopy(array,row * elementSize * column,data,0,elementSize*column);
return data;
}
関連リンク: MSDN: Buffer Class
添付:
報告日時: 11/05/2003
最終更新日: 09/26/2005
ドキュメントID: 334B9O5B
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.