关于MATLAB数据结果的输出问题(fprintf)

我做了个MATLAB的程序,是一个循环(for...end),每个不同的i都会有个不同的结果X对应,于是我就用fprintf来输出每个不同i时m的值,但是每次下一个m都把前一个m值给代替了,最后得到的不是一组数据而是1个m值,不知道应该怎样做呢?以下是程序:

pix=7.4e-6;
X=1.41;
Y=0.96;
D=[8 10:5:50 60:10:100];
for i=1:length(D)
for j=1
A=imread(['D',num2str(D(i)),'_',num2str(j),'.tif']);
if (j==1)
figure(1),BW = roipoly(A);
end
IM=double(A).*double(BW);
level=graythresh(IM)
BW = im2bw(IM,level);

if (j==1)
figure(2),imagesc(BW),
surf(i)=bwarea(BW)/(640*480) %4.8095e+004 15.61%
m=[i,surf(i)];
end

end
fid = fopen('exp.txt','w');
fprintf(fid,'%6.2f %12.8f\n',m);
fclose(fid);
end
我也试过放在最外面,可是还是只有最后一组数据

第1个回答  推荐于2016-01-15
唉,叫你把fopen和fclose放到循环外面,不是fprintf
汗啊!
fid = fopen('exp.txt','w');
for i=1:length(D)
for j=1
A=imread(['D',num2str(D(i)),'_',num2str(j),'.tif']);
if (j==1)
figure(1),BW = roipoly(A);
end
IM=double(A).*double(BW);
level=graythresh(IM)
BW = im2bw(IM,level);

if (j==1)
figure(2),imagesc(BW),
surf(i)=bwarea(BW)/(640*480) %4.8095e+004 15.61%
m=[i,surf(i)];
end

fprintf(fid,'%6.2f %12.8f\n',m);
end

end
fclose(fid);本回答被提问者采纳
第2个回答  2008-01-06
把fopen和fclose放到循环外面,现在这个样子相当于每次都新建一个文件
相似回答