2014-12-11 2 views
0

크기 (232,232,3052)의 "Shanto"라는 3 차원 매트릭스가 있습니다.입체 매트릭스 용 Matlab MemMapFile

나는 메모리 맵이 원하는, 다음 명령을 사용하고 있습니다 : 나는 m.Data에 액세스하려고 할 때

그러나
fileID = fopen('Shanto.dat','w'); 

fwrite(fileID, Shanto, 'single'); 

fclose(fileID) 

m = memmapfile('Shanto.dat') 

, 나는 657,083,392 X 1 UINT8 배열을 지정해하고있다.

원본 행렬의 (232,232,3052) 모양을 유지할 수 있도록 만드는 방법은 무엇입니까?

감사합니다,

답변

1

당신이 (기본값은 실제로 UINT8입니다) 형태/형식을 지정할 수 있습니다 .dat 파일을로드. 당신은 또한에 fwrite를 사용하여 올바른 데이터 형식을 지정해야합니다

fileID = fopen('Shanto.dat','w'); 

fwrite(fileID, Shanto, 'uint8'); %// Instead of 'single' as before. 

fclose(fileID) 

m = memmapfile('Shanto.dat','Format',{'uint8',[232 232 3052],'MyFancyName'}) 

그런 다음 당신이 무엇을 제안하려고 here

+0

m.Data.MyFancyName

더 많은 정보를 사용하여 해당 차원 배열에 액세스 할 수 있습니다,하지만 난이 얻을 오류 : 데이터 필드에 subscripting 작업이 쉼표로 구분 된 목록 을 만들려고했습니다. memmapfile 클래스는 subscripting 할 때 쉼표로 구분 된 목록의 사용을 지원하지 않습니다. 이 문제에 대한 제안이 있으십니까? 감사합니다. Ben – BenTam64

+1

죄송합니다. fwrite를 사용할 때도 uint8 형식을 지정해야한다는 점을 잊어 버렸습니다. 나는 내 대답을 편집했다. 이제는 효과가 있습니다. –

+0

도와 주셔서 감사합니다. 매우 감사드립니다. 해결했습니다! – BenTam64