关于您的代码的一件事:该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
请注意,当您打印标题行和数据行时,每个部分的字段宽度是相同的。
此代码假定您要打印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 );
编辑:如果你想把它保存到文件中,你应该这样写:
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
有关更多信息,请参见http://www.mathworks.com/help/matlab/low-level-file-io.html