많은 수의 텍스트 파일을 읽고 특정 열의 최대 값과 해당 시간을 찾습니다. 이 값을 찾는 for 루프는 정상적으로 작동하지만 문제는 for 루프의 각 반복에 필요한 세 변수 (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
텍스트 파일은 결국 모든 반복 대신 하나의 반복에 대한 값을 제공합니다. 해결 방법으로 displaytable을 사용할 수 있었지만 숫자가 아닌 문자가 포함 된 "thisfilename"을 쓰는 데 문제가 있습니다.
셀에 값을 저장하고 for-loop 외부의 파일에 셀을 쓰는 방법은 어떻습니까? – NKN
루프 뒤의 출력 파일'fclose (writefile)'을 닫지 않습니다. 예제에 포함시키는 것을 잊었습니까? – Hoki