Matlab fprintf的整齐排列
下面是我的Matlab代码Matlab fprintf的整齐排列,matlab,printf,Matlab,Printf,下面是我的Matlab代码 fprintf(1, 'Object # \tArea \tPerimeter \tCentroid\n'); for i=1:num a(i)=s(i).Area; b(i)=s(i).Perimeter; c(i)=s(i).Centroid; end fprintf(1, '#%3d %15u %15u %15u %15u\n', i, a(i), b(i),c(i); 输出是 File name # Area Perimeter C
fprintf(1, 'Object # \tArea \tPerimeter \tCentroid\n');
for i=1:num
a(i)=s(i).Area;
b(i)=s(i).Perimeter;
c(i)=s(i).Centroid;
end
fprintf(1, '#%3d %15u %15u %15u %15u\n', i, a(i), b(i),c(i);
输出是
File name # Area Perimeter Centroid
1 44992 9.021421e+002 3.464378e+002
如何使输出以整洁的方式对齐,如下所示:
File name Area Perimeter Centroid
this_is_my_filename 44992 9.021421e+002 3.464378e+002
谢谢 关于代码的一件事是:
fprintf(1),#%3d%15u%15u%15u%15u\n',i,a(i),b(i),c(i);
行在循环之外,因此它只打印循环中i
变量最后一个值的数据。这就是为什么只打印一行
至于美化输出,您可以尝试以下方法:
fprintf(1, '%15s\t%9s\t%9s\t%19s\n', 'Object #','Area','Perimeter','Centroid');
for i=1:num
fprintf(1, '%15.5f\t%9.5f\t%9.5f\t%9.5f:%9.5f\n', i, s(i).Area, s(i).Perimeter, s(i).Centroid );
end
fid = fopen('YourFileName.txt','w'); % open file for writing
fprintf(fid, '%15s\t%9s\t%9s\t%19s\n', 'Object #','Area','Perimeter','Centroid');
fprintf(fid, '%15.5f\t%9.5f\t%9.5f\t%9.5f:%9.5f\n', DataToPrint );
fclose(fid); % close file
请注意,打印标题行和数据行时,每个部分的字段宽度相同
此代码假定您要打印regionprops
函数的结果。在这种情况下,Centroid
不是单个数字,而是指示区域质心x和y位置的两元素向量
或者,您也可以在不使用循环的情况下执行相同的操作
DataToPrint = [
[1:num]
[s.Area]
[s.Perimeter]
[s.Centroid]
];
fprintf(1, '%15s\t%9s\t%9s\t%19s\n', 'Object #','Area','Perimeter','Centroid');
fprintf(1, '%15.5f\t%9.5f\t%9.5f\t%9.5f:%9.5f\n', DataToPrint );
编辑:如果要将此文件保存到文件中,应按以下方式编写:
fprintf(1, '%15s\t%9s\t%9s\t%19s\n', 'Object #','Area','Perimeter','Centroid');
for i=1:num
fprintf(1, '%15.5f\t%9.5f\t%9.5f\t%9.5f:%9.5f\n', i, s(i).Area, s(i).Perimeter, s(i).Centroid );
end
fid = fopen('YourFileName.txt','w'); % open file for writing
fprintf(fid, '%15s\t%9s\t%9s\t%19s\n', 'Object #','Area','Perimeter','Centroid');
fprintf(fid, '%15.5f\t%9.5f\t%9.5f\t%9.5f:%9.5f\n', DataToPrint );
fclose(fid); % close file
有关更多信息,请参见谢谢!如何将输出保存在文本文件中?例如,命令窗口显示:对象#区域周长质心