매트릭스 파일 형식 (예 : 4070x4070)의 대형 MATLAB 파일 (150MB)이 있습니다. 이 파일을 MATLAB에서 작업해야하지만이 파일을로드 할 수 없습니다. "메모리 부족"오류가 발생합니다. 이 파일 크기를로드 할 수있는 다른 방법이 있습니까? 32 비트 프로세서를 사용 중이며 2GB의 RAM이 있습니다. 제발 도와주세요, 나는이 문제를 다룰 때 지쳐 가고 있습니다.MATLAB에서 대용량 파일 (~ 150MB)을로드하려면 어떻게해야합니까?
답변
이미지 파일이고 작업하고 싶다면 matlab block processing을 사용해보십시오. 이를 사용하여 파일의 작은 부분을로드합니다. 귀하의 기능 fun
은 각 블록에 개별적으로 적용됩니다. (그 지적에 대한 @Nzbuu 덕분에)하지만 문서화되지 않은 기능 것 같다 - 경우
B = blockproc(src_filename,[M N],fun)
그것이 xml
파일이, SAX
와 함께 XML DOM Node
모드를 사용해보십시오.
또한 모든 종류의 텍스트 파일 (데이터 량 때문에) 인 경우 분리 할 외부 도구를 사용해보십시오.
Starting 릴리스 R2011b (ver.7.13)부터 matlab.io.MatFile에 MATFILE이라는 새 개체가 생성자로 있습니다. MAT- 파일의 변수 부분을로드하고 저장할 수 있습니다. 자세한 내용은 설명서를 참조하십시오. 다음은 행렬의 일부가 읽을 수있는 간단한 예입니다 : 원본 파일이 MAT 파일이 아닌 경우
matObj = matfile(filename);
a = matObj.a(100:500, 200:600);
는 있지만, 일부 텍스트 파일, 당신은 그것을 부분적으로 읽고 같은 변수에 그 부분을 저장 matfile
을 사용할 수 있습니다 나중에 액세스 할 수 있도록 MAT 파일에 저장하십시오. 생성자에서 Writable
속성을 true로 설정하는 것을 잊지 마십시오. 텍스트 파일을 가정
탭으로 구분하고 숫자 만 포함하고, 여기에 블록으로 데이터를 읽고 MAT 파일에 저장하는 예제 스크립트입니다 : 나는 최신 버전이없는
blocksize = 100;
startrow = 0;
filename = 'test.mat';
matObj = matfile(filename,'Writable',true);
while true
try
a = dlmread(filename,'\t',startrow,0); %# depends on your file format
startrow = startrow + blocksize;
matObj.a(startrow+(1:blocksize),:) = a;
catch
break
end
end
이제 테스트를 해보고 작동시켜야한다.
또한 사용자는 MATLAB의 Memory-Mapping of Data Files을 사용하여 파일 블록을 읽고 처리 한 다음 블록으로 진행하여없이 전체 파일을 한 번에 메모리에로드 할 수 있습니다.
예를 들어, "100 배정도 부동 소수점 파일을 메모리에 매핑하는"this example을 참조하십시오.
MATLAB에 방금 등장했을 때이 객체를 이전 버전에서 사용해 보았습니다. 흥미롭게도 MATLAB은 어쨌든 전체 파일을 메모리에로드해야했습니다. Mathworks 지원팀에 연락하여 확인했습니다.그들은 기본적으로이 기능을 다른 응용 프로그램간에 동시에 공유 할 수있는 기능으로 홍보했습니다. 글쎄요, 상황이 바뀌었나 봅니다. 나는 R2011a로 다시 시도했고'memmapfile' 객체는 300b만을 사용했습니다. 좋은 대답. +1. 파일은이 객체에 대해 규칙적인 구조를 가져야하므로 (바이너리 만?) 입력 파일을 다시 포맷해야 할 수 있습니다. – yuk
- 1. MATLAB에서 파일 이름 문자열을 구문 분석하려면 어떻게해야합니까?
- 2. MATLAB에서 '포함'동작을 에뮬레이션하려면 어떻게해야합니까?
- 3. Matlab에서 Java로 결과를 얻으려면 어떻게해야합니까?
- 4. Matlab에서 파일에 쓰려면 어떻게해야합니까?
- 5. MATLAB에서 GUI를 프로그래밍하려면 어떻게해야합니까?
- 6. HttpClient로 대용량 파일 다운로드
- 7. 하스켈에서 대용량 파일 다루기
- 8. 대용량 파일 지원
- 9. AFNetworking으로 대용량 파일 업로드?
- 10. git에서 대용량 파일 거부
- 11. Django 대용량 파일 전송
- 12. swfbridge 및 대용량 파일
- 13. 코코아에서 대용량 파일 수정
- 14. WCF 스트리밍 대용량 파일
- 15. 대용량 파일 업로드가 실패합니다.
- 16. 대용량 파일 검색 알고리즘
- 17. 대용량 파일 업로드
- 18. 대용량 파일 업로드
- 19. CodeIgniter 대용량 파일 업로드
- 20. 대용량 파일 처리
- 21. 소켓으로 대용량 파일 전송
- 22. VB.NET으로 대용량 파일 분할
- 23. 대용량 파일 결합
- 24. 브라우저, 대용량 파일 업로드
- 25. Silverlight에서 대용량 파일 업로드
- 26. 스칼라에서 대용량 파일 수정
- 27. 대용량 데이터 파일 피하기
- 28. 대용량 파일 조언
- 29. 대용량 파일 처리
- 30. PHP 대용량 파일 복사
* .mat 파일 형식 또는 다른 형식입니까? – hatboyzero
오픈 할 때 150MB 파일이 2GB의 메모리를 가득 채울 수 있다는 것에 매우 놀랐습니다! 로드를 시도하기 전에 사용 가능한 메모리가 얼마나 남았습니까? 닫을 수있는 다른 프로그램이 있습니까? – japreiss
.mat 파일 인 경우,'whos -file'도 문제를 일으키거나 그냥'load'합니까? .mat 파일이 아니라면 헤더 텍스트가 있습니까? –