我已經編寫了一個腳本,將其輸出保存爲CSV文件供以後參考,但用於導入數據的第二個腳本只需要很長時間就可以讀取。在MATLAB中導入CSV文件的最快方法
的數據是以下格式:
Item1,val1,val2,val3
Item2,val4,val5,val6,val7
Item3,val8,val9
其中標頭是在最左邊的列中,並且所述數據值佔用的行的其餘部分。一個主要困難是對於每個測試項目,數據值的數組可以是不同的長度。我將它保存爲一個結構體,但我需要能夠在MATLAB環境之外進行編輯,因爲有時我必須刪除沒有安裝MATLAB的計算機上的壞數據行。所以真的,我的問題的第一部分是:我應該以另一種格式保存數據嗎?問題的
第二部分: 我試過importdata,csvread和dlmread,但我不知道這是最好的,或者如果有一個更好的解決方案。現在我正在使用我自己的腳本,使用循環和fgetl,這對於大文件來說非常慢。有什麼建議麼?
function [data,headers]=csvreader(filename); %V1_1
fid=fopen(filename,'r');
data={};
headers={};
count=1;
while 1
textline=fgetl(fid);
if ~ischar(textline), break, end
nextchar=textline(1);
idx=1;
while nextchar~=','
headers{count}(idx)=textline(1);
idx=idx+1;
textline(1)=[];
nextchar=textline(1);
end
textline(1)=[];
data{count}=str2num(textline);
count=count+1;
end
fclose(fid);
(我知道這可能是非常編寫的代碼 - 我是工程師,不是程序員,請不要對我大喊大叫 - 改進建議將受到歡迎,雖然)
+1推薦strtok - 我不知道它存在之前 – Doresoom 2010-01-11 19:44:51