我有一個矩陣形式的大型MATLAB文件(150MB)(即4070x4070)。我需要在MATLAB中處理這個文件,但我似乎無法加載這個文件。我收到「內存不足」錯誤。有沒有其他的方式可以加載這個文件的大小?我正在使用32位處理器,並具有2GB的RAM。請幫助我,我處理這個問題已經筋疲力盡了。如何在MATLAB中加載大文件(〜150MB)?
回答
如果它是一個圖像文件,並且您想使用它,請嘗試使用matlab block processing。通過使用它,你將加載文件的一小部分。您的功能fun
將分別應用於每個塊。
B = blockproc(src_filename,[M N],fun)
如果它是一個xml
文件,一起嘗試XML DOM Node
模式SAX
- (感謝@Nzbuu指出了這一點),但是,這似乎是一個未公開的功能。
此外,如果它是任何類型的文本文件(不太可能,由於數據量),請嘗試使用外部工具進行拆分。
Starting從版本R2011b(版本7.13)開始,有一個新對象matlab.io.MatFile和MATFILE作爲構造函數。它允許加載和保存MAT文件中的部分變量。有關更多詳情,請參閱文檔。下面是一個簡單的例子來讀取一個矩陣的一部分:
matObj = matfile(filename);
a = matObj.a(100:500, 200:600);
如果您的原始文件不是MAT文件,但一些文本文件,可以部分地理解它,並使用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在文件塊,並處理讀取,然後繼續下一個塊,而無需將整個文件加載到內存中一次。
例如,請參閱this example,其中「將100個雙精度浮點數的文件映射到內存」。
在早期版本中,當它剛剛出現在MATLAB中時,我嘗試了這個對象。有趣的是,MATLAB不得不將整個文件加載到內存中。我聯繫了Mathworks的支持人員,他們證實了這一點。他們基本上將這個功能推廣爲能夠同時在不同應用程序之間共享數據的功能。那麼,看起來事情已經改變了。我已經使用R2011a再次嘗試過,memmapfile對象只佔用300b。很好的答案。 +1。該文件必須具有該對象的常規結構(僅適用於二進制?),因此無論如何輸入文件可能需要重新格式化。 – yuk 2012-02-06 18:55:24
- 1. 如何使用Dropbox上傳會話文件大於150MB?
- 2. 如何將文件加載到MATLAB?
- 3. 在MATLAB中加載多個.mat文件
- 4. 如何在matlab中的循環中加載文件
- 5. 如何在MatLab中加載多個文件?
- 6. 如何在Java中加載/打開/讀取matlab文件* .mat?
- 7. 如何在matlab中加載數據集文件?
- 8. Matlab的:加載的文件
- 9. 如何增加VB.NET中的最大加載文件大小?
- 10. 在MATLAB中加載命令加載空白文件
- 11. matlab中的大型數據文件不加載/導入
- 12. 將大的Excel(xlsx)文件加載到matlab中
- 13. 如何在Python中高效地加載大文本文件
- 14. 如何在JTextArea中加載大文本文件
- 15. 如何在matlab中加載file.txt?
- 16. 如何在PHP中下載大文件
- 17. 在C#中加載大型JSON文件
- 18. C#打開大型Excel文件(150MB)OledbConnection System.OutOfMemoryException
- 19. 如何從內存中加載matlab MAT文件?
- 20. 如何將mat文件加載到matlab矩陣中
- 21. 在Matlab中搜索大文本文件
- 22. 如何在MATLAB中導入我的大文本文件
- 23. 如何在Nodejs中逐行加載大文件
- 24. 如何在spark中加載大文件(json或csv)
- 25. 如何在android中加載大型xls文件?
- 26. 如何在C#Windows應用程序中加載大文件
- 27. 如何在pytq窗口中加載大型pkl文件?
- 28. 如何在Android中大的PDF文件加載到我的WebView
- 29. 如何使用matlab/Octave在特定變量中加載文本文件?
- 30. MATLAB - 在一個大文件
它是* .mat文件格式,或其他格式? – hatboyzero 2012-02-03 19:05:50
我非常驚訝一個150MB的文件可以在打開時填滿2GB的內存!在嘗試裝載之前,您的機器有多少可用內存?還有其他可以關閉的程序嗎? – japreiss 2012-02-03 19:20:23
如果這是一個.mat文件,'whos -file'也會導致問題,或者只是'load'?如果它不是.mat文件,是否有標題文本? –
2012-02-03 21:22:24