2013-06-19 3 views
2

데이터 저장을 위해 C# 및 Matlab/Octave를 사용하여 HDF5를 사용하여 조사하고 있습니다. 지금은 다소 기본적인 문제가 있습니다 ... 1D 데이터 세트를 만들고 h5 파일에 저장할 수 있지만 2D 코드에 대한 코드를 알아낼 수는 없습니다.HDF5DotNet에서 2D H5Array를 만드는 방법

내 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(); 

지금까지 그렇게 좋았습니다. 자, 지금 ... 나는 1 차원 배열 성공적으로 사용되는 다음 줄을

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

을 HDF5 파일을 만들 수 있습니다,하지만 난 ... 2 차원 배열에 대한

을 구문을 찾을 수 없습니다
H5D.write(dset,typeId,new H5Array<int>(arrays)); 

내 두 번째 질문은 그룹 및 그룹 그룹을 어떻게 만듭니 까? 아직까지는 그 일을하기 시작하지 않았지만 첫 번째 비트에서 계속 작업하는 동안 출발점에 감사드립니다 !!

답변

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)); 
관련 문제