私には読みたいテキストファイルがたくさんあり、特定の列の最大値とそれに対応する時間があります。これらの値を見つけるためのforループは正常に動作しますが、私の問題は、forループの各繰り返しで必要な3つの変数(thisfilename、M、およびwavetime)を示すテキストファイルを作成することです。MATLAB:forループ内のスカラーをテキストファイルにエクスポートする
Output_FileName_MaxWaveHeights = ['C:\Users\jl44459\Desktop\QGIS_and_Basement\BASEMENT\Mesh_5_2045\Run_A\','MaxWaveHeights.txt'];
writefile = fopen(Output_FileName_MaxWaveHeights,'a');
dinfo = dir('*.dat');
for K = 1 : length(dinfo)
thisfilename = dinfo(K).name; %just the name of the file
fileID = fopen(thisfilename); %creates numerical ID for the file name
thisdata = textscan(fileID,'%f64%f64%f64%f64%f64%f64%f64',500,'HeaderLines',1); %load just this file
thisdataM = cell2mat(thisdata); %transforms file from cell array to matrix
[M,I] = max(thisdataM(:,5)); %finds max WSE and row it's in
wavetime = 2*(I-1); %converts column of max WSE to time
fprintf(writefile,'%s %8.4f %4.0f \r\n',thisfilename,M,wavetime);
fclose(fileID); %closes file to make space for next one
end
テキストファイルは、すべての文字列ではなく、1つの繰り返しの値を与えるだけです。私は回避策としてdisplaytableを使用することができましたが、非数値文字を含む "thisfilename"の記述に問題があります。
セルに値を保存し、セルをforループの外側のファイルに書き込む方法はありますか? – NKN
ループの後に出力ファイル 'fclose(writefile)'を最後に閉じることはありません。あなたはそれを例に含めることを忘れましたか? – Hoki