我需要讀取大約4000個數據文件,每個大約400 kB。數據將在稍後分析,因此我將這些文件寫入數據結構。進口操作大約需要4分鐘,我也試過importdata
和dlmread
,但沒有太大的區別。在matlab中導入多個大文件的快速方法
請讓我知道,如果是循環,輸入函數或Matlab只是慢導入多個大文件。使用catch
/try
是因爲這些文件中的某些文件無法正常讀取,但似乎不會減慢腳本的速度。
這裏的腳本:
for k=40020:10:75000
try
name=['tmp' sprintf('%d',k)];
c=c+1;
m(k).count=k;
m(k).col=load(name);
[val in]=find(m(k).col(:,5)~=1);
m(k).id=m(k).col(val,1);
m(k).posx=m(k).col(val,2);
m(k).posy=m(k).col(val,3);
m(k).posz=m(k).col(val,4);
catch
disp(['Error'])
end
end
什麼樣的文件?包含數字的文本文件?你預先分配'm'? – Daniel
要找出哪條線放慢了執行速度,您應該使用MATLAB Profiler運行該命令。如果確實是讀取文件的速度減慢(我懷疑它是這樣),那麼帶有'load'命令的行應該顯示爲瓶頸。 – MrAzzaman
你的循環變量'k'不是順序的(它有10個跳轉),所以你的'm'數組實際上非常稀疏。 – Shai