私のソースデータは2次元配列(double[,]
)の3dポイントの 'cnt'の数であるのに対し、1d配列(double[]
)を引数とする関数があります。2次元配列から1次元配列へのC#参照
double[,] points = new double[3,cnt]
は、しかし、私は実際にやってみたいことは好ましく[i]の値によって、[i]の配列値の内容をコピーすることなく、機能gpu.Average(double[] arg)
に3つの第二薄暗いアレイの各々に渡すことです。それはC#で可能ですか?
のコード例
これは動作します:
double[] points1d = new double[cnt];
// ... fill points1d with data, then
double a = gpu.Average(points1d); // <- Alea.gpu.Average() accepts a 1d array
でも言ったように、私は、関数gpu.Average(に二次元に渡したい)、三ループのために実行する必要がwhithout 1D配列にコピーする回:
double[,] points2d = new double[3,cnt];
// ... fill points2d with 'cnt' items of data and
// then pass it on
double x = gpu.Average(points2d[0,??]); // How to pass on 2nd dim?
double y = gpu.Average(points2d[1,??]);
double z = gpu.Average(points2d[2,??]);
は1D配列にデータをコピーすることなく、可能なこのですか?
(計算平均はgpu並列ライブラリの良い例ではありません。異なるデータ型の実行時間を比較した単なるテストケースです)&構造体。
//ロルフ
いいえ、2d配列( '[、]')の代わりにネストされた配列( '[] []')を使用するとできます。 – Blorgbeard
Hm。ネストされた配列は動的な長さで割り当てることができますか? 私は 'double [3] [someList.Count]'を考えています。 – RIL
あなたが非常に運が良ければ、メソッドは配列の代わりにdouble *をとるオーバーロードを持つでしょう。それから、あなたはこれを行うことができます。 – hoodaticus