後で参照できるように、出力を CSV ファイルに保存するスクリプトを作成しましたが、データをインポートするための 2 番目のスクリプトは、データを読み戻すのに非常に時間がかかります。
データの形式は次のとおりです。
Item1,val1,val2,val3
Item2,val4,val5,val6,val7
Item3,val8,val9
ここで、ヘッダーは一番左の列にあり、データ値は行の残りを占めます。大きな問題の 1 つは、データ値の配列の長さがテスト項目ごとに異なる可能性があることです。構造体として保存しますが、MATLAB がインストールされていないコンピューターで不良データの行を削除する必要がある場合があるため、MATLAB 環境の外で編集できるようにする必要があります。本当に、私の質問のパート 1 は次のとおりです。データを別の形式で保存する必要がありますか?
質問の 2 番目の部分: 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);
(これはおそらくひどく書かれたコードであることはわかっています。私はエンジニアであり、プログラマーではありません。怒鳴らないでください。ただし、改善のための提案は大歓迎です。)