以下に示すような形式の.txtファイルが30個あります。各ファイルから、対応する値と行列を抽出する必要があります。したがって、文字列線をスキップして線を空白にする必要があります。私はまた、各時間ステップ(この場合、我々は5×5行列を有する)ごとに各n行n列の行列の合計カウント数を知っている。しかし、私のコードは動作しません。Matlab:複数形式のtxtファイルを読み込み、文字列と空白行をスキップ
ここでここでtxtファイルの内容
Current Time Step = 2
Array - one
1 2 3 4 5
2 0 1 0 0
3 1 0 0 0
4 0 0 0 1
5 0 0 1 0
Array - two
1 1 1 1 1
2 0 1 0 0
3 1 0 0 0
4 0 0 0 1
5 0 0 1 0
Array - three
1 0.000000000000000E+000 0.000000000000000E+000
2 -2.43840000000000 0.000000000000000E+000
3 2.43840000000000 0.000000000000000E+000
4 0.000000000000000E+000 -2.43840000000000
5 0.000000000000000E+000 2.43840000000000
Array - four
1 8.969565865552799E-004
2 3.871274684514957E-004
3 3.871274684514958E-004
4 3.871274684514958E-004
5 3.871274684514956E-004
Array - five
1 35472082.4364420
2 34502005.6533170
3 34502005.6533170
4 34502005.6533170
5 34502005.6533170
Time of Current Time Step = 0.537921191784371
Time at the End of Current Time Step = 0.559240045256864
が私のコードです:
Nc = 5;
textFilename = ['TimeStep-2.txt'];
fid = fopen(textFilename);
for k = 1:1
zero = sscanf(fid,'%f','Delimiter','\n');
end
for k = (1+4):(1+(Nc-1)+4)
one = sscanf(fid,'%f %f %f %f %f',[5,inf]);
end
for k = (1+(Nc-1)+2*4):(1+2*(Nc-1)+2*4)
two = sscanf(fid,'%f %f %f %f %f',[5,inf]);
end
for k = (1+2*(Nc-1)+3*4):(1+3*(Nc-1)+3*4)
three = sscanf(fid,'%f %f %f',[3,inf]);
end
for k = (1+3*(Nc-1)+4*4):(1+4*(Nc-1)+4*4)
four = sscanf(fid,'%f %f',[2,inf]);
end
for k = (1+4*(Nc-1)+5*4):(1+5*(Nc-1)+5*4)
five = sscanf(fid,'%f %f',[2,inf]);
end
for k = (1+5*(Nc-1)+5*4+2):(1+5*(Nc-1)+5*4+2)
six = sscanf(fid,'%f','Delimiter','\n');
end
for k = (1+5*(Nc-1)+5*4+2*2):(1+5*(Nc-1)+5*4+2*2)
seven = sscanf(fid,'%f','Delimiter','\n');
end
fclose(fid);
コードはどこで失敗しますか? – codeaviator
sscanfを使用しているエラー「入力引数が多すぎます」 – FortranFun
なぜこのようなデータ形式を使用していますか? – Bernhard