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