Matlab 在fprintf中迭代数字
我在MATLAB中有以下代码。我想在代码的Matlab 在fprintf中迭代数字,matlab,Matlab,我在MATLAB中有以下代码。我想在代码的文件名(%d)部分依次迭代数字1、2和3,这样如果我打开所有曲目,每个if语句将打印文件名(1),文件名(2),文件名(3)。如果我关闭B_曲目,A_曲目将打印filename(1),C_曲目将打印filename(2)。如何在fprintf中迭代数字,以便文件名(%d)根据我打开和关闭的曲目顺序打印出来 A_track = 1; B_track = 0; C_track = 1; fid=fopen('test.txt','w'); if A_tr
文件名(%d)
部分依次迭代数字1、2和3,这样如果我打开所有曲目,每个if
语句将打印文件名(1)
,文件名(2)
,文件名(3)
。如果我关闭B_曲目
,A_曲目
将打印filename(1)
,C_曲目
将打印filename(2)
。如何在fprintf中迭代数字,以便文件名(%d)根据我打开和关闭的曲目顺序打印出来
A_track = 1;
B_track = 0;
C_track = 1;
fid=fopen('test.txt','w');
if A_track ==1, i=1;
fprintf(fid,'\n\n');
fprintf(fid,[' filename(%d)=''test1'' \n'],i);
fprintf(fid,' idtrack(%d)=A_track \n',i);
end
if B_track ==1, i=2;
fprintf(fid,'\n\n');
fprintf(fid,[' filename(%d)=''test2'' \n'],i);
fprintf(fid,' idtrack(%d)=B_track \n',i);
end
if C_track ==1, i=3;
fprintf(fid,'\n\n');
fprintf(fid,[' filename(%d)=''test3'' \n'],i);
fprintf(fid,' idtrack(%d)=C_track \n',i);
end
fclose(fid);
对于数字的迭代,最简单的技巧是使用函数。 您可以设置分隔符并设置要迭代的列表的大小。 由于mod()将返回0,您必须向其中添加1,因为matlab索引的矩阵从1开始,而不是0。(大多数编程语言从0开始) 假设你有一个for循环,你想迭代数字1,2和3。然后它看起来像这样
for ii=0:10
nmbtoprint=mod(ii,3)+1;
fprintf(fid,[' filename=''test_%1'' \n'],nmbtoprint);
end
只要有一个通用计数器,就不需要对每个if语句使用for循环。对于常规计数器,您可以创建任何变量,只需确保它更新即可(在脚本中需要的任何位置添加1)
也可以使用(单元格)数组
我想这就是您想要实现的:
I
在开始时设置为1,并且对于打印出来的每个项目,它都会增加1。这样,无论哪个曲目打开或关闭,打开的曲目都将按顺序i
打印
A_track = 1;
B_track = 0;
C_track = 1;
fid = fopen('test.txt','w');
i = 1;
if A_track
fprintf(fid,'\n\n');
fprintf(fid,[' filename(%d)=''test1'' \n'],i);
fprintf(fid,' idtrack(%d)=A_track \n',i);
i = i+1;
end
if B_track
fprintf(fid,'\n\n');
fprintf(fid,[' filename(%d)=''test2'' \n'],i);
fprintf(fid,' idtrack(%d)=B_track \n',i);
i = i+1;
end
if C_track
fprintf(fid,'\n\n');
fprintf(fid,[' filename(%d)=''test3'' \n'],i);
fprintf(fid,' idtrack(%d)=C_track \n',i);
i = i+1;
end
fclose(fid);
我还将A_track==1时的
更改为A_track时的。我觉得这更容易阅读。如果对您更有意义,您可以使用true
和false
值来定义每个track
变量。但是true
和1
在所有方面都是相同的。如何在fprintf中迭代数字,以便文件名(%d)根据我打开和关闭的曲目顺序打印出来?
idtoprint1=[0,1,10,100];
idtoprint2={'first','B','3rd'};
for ii=0:10
ida1=mod(ii,4)+1;
ida2=mod(ii,3)+1;
fprintf(fid,[' filename=''test_%i'' \n'],idtoprint1(ida1));
fprintf(fid,[' filename=''test_%s'' \n'],idtoprint2{ida2});
end
A_track = 1;
B_track = 0;
C_track = 1;
fid = fopen('test.txt','w');
i = 1;
if A_track
fprintf(fid,'\n\n');
fprintf(fid,[' filename(%d)=''test1'' \n'],i);
fprintf(fid,' idtrack(%d)=A_track \n',i);
i = i+1;
end
if B_track
fprintf(fid,'\n\n');
fprintf(fid,[' filename(%d)=''test2'' \n'],i);
fprintf(fid,' idtrack(%d)=B_track \n',i);
i = i+1;
end
if C_track
fprintf(fid,'\n\n');
fprintf(fid,[' filename(%d)=''test3'' \n'],i);
fprintf(fid,' idtrack(%d)=C_track \n',i);
i = i+1;
end
fclose(fid);