【发布时间】:2014-06-21 06:04:40
【问题描述】:
我正在从 Matlab 编写一个外部文件。我想将几种类型的 fprintf 语句放在同一个 for 循环中,写入同一个文件。但是,我希望将每种类型的 fprintf 语句产生的行组合在输出文件中。也就是说,迭代第一个 fprintf 语句产生的所有行都应该在迭代第二个 fprintf 语句产生的所有行之前。
这可以通过为每个 fprintf 语句设置一个单独的 for 循环来轻松实现,但应该有一种更优雅的方法来做到这一点,尤其是当我有多种类型的 fprintf 语句时。
for ii=1:length(fieldnames(isom))
clear cau cou
cau=1; cou=1
for kk=1:size(isom.(['m' num2str(ii)]),1)
fprintf(fileID,'MPTEMP,,%d,%d,%f\n',size(isom.(['m' num2str(ii)]),1),cau,isom.(['m' num2str(ii)])(kk,1));
cau=cau+1;
%Wait until first fprintf ends then
fprintf(fileID,'MPDATA,,%d,NUXY,%d,%d,%f\n',size(isom.(['m' num2str(ii)]),1),ii,cou,Info{ft(1,1),3});
cou=cou+1;
end
end
【问题讨论】:
-
所以让我试着通过提问来了解您的情况 - 输出文件将包含类似
MPTEMP的文本,用于 kk=1,然后用于 kk=2,直到内部for loop with kk结束并然后MPDATAfor kk=1,2 依此类推,直到 kk 最终进入内部循环。但随后,它回到外循环并重新开始并再次创建MPTEMP和MPDATA。所以这是我的问题 - 你想在ii和kk定义的两个循环中对MPTEMP进行分组,还是只在内部kk循环中分组?
标签: matlab for-loop conditional-statements