丢弃换行符

时间:2015-11-04 20:17:20

标签: matlab newline fopen fgets

以下是我正在使用的代码;

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文本文件包含不同的角度。新的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.

1 个答案:

答案 0 :(得分:0)

为了让您的输入和输出文件匹配,您需要删除其中一个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用于输出文件名和输入文件列表的索引。