2013-03-11 2 views
3

모든 거대한 데이터를 hdf5의 단일 데이터 세트에 넣어야합니다. 당신이 볼 수 있듯이 동일한 데이터 세트에 데이터를 추가하려고 할 때matlab에있는 hdf5의 동일한 데이터 세트에 데이터 추가

>> hdf5write('hd', '/dataset1', [1;2;3]) 
>> hdf5write('hd', '/dataset1', [4;5;6], 'WriteMode', 'append') 
??? Error using ==> hdf5writec 
writeH5Dset: Dataset names must be unique when appending data. 

는 hdf5write 불평 것입니다 : 당신이하려고하면 이제 일이다. 주위를 둘러 보았을 가능성이 한 가지 해결 방법을 먼저 데이터 집합에서 데이터를 잡고 다음 MATLAB 환경에서 바로 데이터를 연결하는 것입니다 참조하십시오. 물론 작은 데이터에는 문제가되지 않습니다. 이 경우, 우리는 기가 바이트의 데이터에 대해 이야기하고 있으며, Matlab은 메모리 부족을 소리 지르기 시작합니다.

이로 인해이 경우 사용할 수있는 옵션은 무엇입니까?

참고 : 우리 matlab 버전에는 h5write 기능이 없습니다.

답변

1

'추가'모드는 기존 파일에 데이터 세트를 추가하는 것입니다.

hdf5write는 기존 데이터 집합에 추가를 지원하지 않는 것으로 보입니다. 새로운 h5write 기능이 없으면 H5 * 패키지 기능으로 노출 된 저수준 HDF5 라이브러리 기능을 갖춘 작은 유틸리티를 작성하는 것이 가장 좋습니다.

doc 페이지에는 datatset에 추가하는 방법에 대한 예제가 있습니다.

2

hdf5write으로 작업 할 수는 없지만 Matlab 버전이 너무 오래되지 않은 경우 h5createh5write으로 처리 할 수 ​​있습니다. 이 예는 doc of h5write에서 가져온 것입니다.

데이터를 무제한 데이터 세트에 추가하십시오.

h5create('myfile.h5','/DS3',[20 Inf],'ChunkSize',[5 5]); 
for j = 1:10 
    data = j*ones(20,1); 
    start = [1 j]; 
    count = [20 1]; 
    h5write('myfile.h5','/DS3',data,start,count); 
end 
h5disp('myfile.h5'); 

matlab에 이전 버전의 경우, Matlab에서의 HDF5 낮은 수준의 API를 사용하여 수행 할 수 있어야한다.

+0

이것은 Matlab의 최신 버전을 사용하는 사람들에게 도움이 될 것입니다.하지만 우리는 우리가 h5write 기능이 없다는 질문에 답했습니다. – Karl

관련 문제