2

データ ストレージに C# および Matlab/Octave で HDF5 を使用して調査しています。現在、かなり基本的な問題があります... 1D データセットを作成して h5 ファイルに保存できますが、2D データセットのコードを理解できません。

私の 2 次元行列 (リストのリストから)

List<List<int>> table = new List<List<int>>();
        List<int> row;
        for (int a=1;a<13;a++)
        {
            row = new List<int>();
            for (int b=1;b<13;b++)
                row.Add(a*b);
            table.Add(row);
        }
// Require an array containing dimensions of array to store.  
            long[] dims = new long[2];
            dims[0] = table.Count;
            dims[1]=table[0].Count;

            int[][] arrays = table.Select(a => a.ToArray()).ToArray();

ここまでは順調ですね。さて、HDF5ファイルを作成するには...

H5DataSpaceId spaceId = H5S.create_simple(1, dims);
H5DataTypeId typeId = H5T.copy(H5T.H5Type.NATIVE_INT);
H5DataSetId dset = H5D.create(h5fileid, "TimesTables", typeId, spaceId);

さて、次の行は 1 次元配列に使用できましたが、2 次元配列の構文が見つかりません...

H5D.write(dset,typeId,new H5Array<int>(arrays));

2 番目の質問は、グループやグループのグループをどのように作成するのですか? まだその作業を開始していませんが、最初の作業を続けるための出発点としていただければ幸いです!!

4

1 に答える 1

4

data[a,b]表記法ではなくdata[a][b]表記法を使用して C# でデータセットを定義すると、H5D.write()呼び出しが記述どおりに機能することがわかりました。そう、

var mydata = new int[100,100];   // int[100][100] doesn't work
...
H5D.write(dset,typeId,new H5Array<int>(mydata));
于 2013-08-19T21:26:14.967 に答える