丢弃换行符

discard newline character

这是我正在使用的代码;

files2 = dir('X_*.txt');

for kty=1:p

fidF = fopen(['X(A)_' num2str(kty) '.txt'], 'w');

for i = 1:length(files2)

fid = fopen(files2(i).name);

while(~feof(fid))

  string = fgetl(fid) 

 fprintf(fidF, '%s', string)


end

    fclose(fidF);
end

end

P 等于 90,因为有 90 个不同的 X 文本文件,其中包含不同的 angles.The 新的 X(A) 文本文件应该是 90 个不同的文件。

该代码用于删除第二行,it's working.

我想问的是,当我使用这段代码时,它会创建 X(A) 个文本文件(90 个文件),但所有文件都包含 X_1 个文件角度变量,但它应该是;

X_1    >   X(A)_1        (each variable should transfer to new file.)
                                                 (X_65  > X(A)_65)
X_2    >   X(A)_2         
...
...

如何修复代码?

  files2 = dir('angle_*.txt');

for i = 1:length(files2)
   fidF = fopen(['angle(A)_' num2str(i) '.txt'], 'w');
   fid = fopen(files2(i).name);
   while(~feof(fid))
      string = fgetl(fid) 
      fprintf(fidF, '%s', string)
   end
   fclose(fidF);
   fclose(fid);
end

结果是

angle_1=272       angle(A)_1=272
angle_2=276       angle(A)_2=308
angle_3=280       angle(A)_3=312
angle_4=284       angle(A)_4=316
angle_5=288       angle(A)_5=320
angle_6=292       angle(A)_6=324
angle_7=296       angle(A)_7=328
angle_8=300       angle(A)_8=332
angle_9=304       angle(A)_9=336
angle_10=308      angle(A)_10=340
angle_11=312      angle(A)_11=344
angle_12=316      angle(A)_12=348

angle_10 variable goes to angle(A)_2 variable and its copy in this order.

为了让您的输入和输出文件匹配,您需要删除其中一个 for 循环并让 X(A)_#.txt 匹配 files2(#).name:

files2 = dir('X_*.txt');

for i = 1:length(files2)
   fid = fopen(files2(i).name);
   fNum = regexp(files2(i).name, '([0-9]*)', 'match');
   fidF = fopen(['X(A)_' fNum{1} '.txt'], 'w');
   while(~feof(fid))
      string = fgetl(fid) 
      fprintf(fidF, '%s', string)
   end
   fclose(fidF);
   fclose(fid);
end

我已经从 1:p 中删除了循环,并使用了循环以 i 作为循环变量的输入文件数。 i 用于输出文件名和输入文件列表的索引。