私はWindows 7マシンでMatlabR2011aを使用しています。 私は635のテキストファイルのフォルダを持っています。各ファイルには、複数の行と2つの列が含まれています。私は、フォルダをループし、各ファイルを読み込み、これらの値をExcelに書き込もうとしています。これまでのところ、これは私が持っているものです:Excelファイルにデータを書き込む、MATLAB
close all; clc;
dirname = uigetdir;
Files = dir(fullfile(dirname,'*.txt'))
for k = 1:635
j =1
filename = fullfile(dirname,Files(k).name);
fid = fopen(filename);
x = fgetl(fid)
while ischar(x)
x = fgetl(fid)
a2 = strtrim(x);
a3 = textscan(a2,'%s');
a4 = a3{1}{1};
a5= a3{1}{2};
pos3 = strcat('A',num2str(j));
xlswrite('sample_output',{a4,a5},'Sheet1',pos3)
j = j+1;
end
fclose(fid);
end
最初のファイルを読み終えたら、次のエラーが表示され続けます。
Error using ==> strtrim Input should be a string or a cell array of strings.
サンプル入力ファイルは次のようになります。
15076 4636259
15707 4636299
15714 1781552
15721 4204950
15730 2174919
16209 4636510
16413 4758572
16470 4445808
17519 311397
17667 2116489
17739 1729694
756
18627 3714194
18695 4192858
19141 632766
19318 1923574
19438 1255216
19493 4635020
19771 4770250
が、私はこれをどのように修正することができますか?これに助けていただければ幸いです! whileループで
今は一度も実行されていないと思います。 Excelファイルが空白です。おそらく 'x = fgetl'コマンドがそれほど遅いからでしょうか? whileループの前に同じ場所に最初の 'x = fgetl'コマンドを残すべきですか? – dawnoflife
はい。 whileループの前に最初のものを残す。秒を動かす。 – learnvst
私はループを使用している方法が間違っていると思います。それは現在の細胞を上書きしています。 – dawnoflife