我的代码是这样的
a= [2 4 5 8 6 7 88 9]
b= [12.8 41.3 13.7]
c= [16 18 20 10.1 17.5 49.5]
fprintf(out_file,'%d %d %d %d %d %d %d %d %f %f %f %d %d %d %f %f %f',a,b,c)
Run Code Online (Sandbox Code Playgroud)
是否可以用较短的形式编写转换(%d....%f)fprintf而不是重复多次?
还是我可以使用其他命令将其写入文件?
该答案假设您不需要尾随十进制零。也就是说,[4 4.1]应以而4 4.1不是4 4.10000或印刷4.00000 4.10000。
让
a = [2 4 5 8 6 7 88 9];
b = [12.8 41.3 13.7];
c = [16 18 20 10.1 17.5 49.123456789]; % example with 9 decimal figures
Run Code Online (Sandbox Code Playgroud)
您可以使用和动态构建格式字符串。另外,您可以使用格式说明符,它自动打印不带小数的整数值:repmatstrjoin %g
fprintf(strjoin([repmat({'%g'},1,numel(a)+numel(b)+numel(c))]),a,b,c)
Run Code Online (Sandbox Code Playgroud)
给
2 4 5 8 6 7 88 9 12.8 41.3 13.7 16 18 20 10.1 17.5 49.1235
Run Code Online (Sandbox Code Playgroud)如果您需要指定多个有效数字,请避免尾随十进制零:
fprintf(strjoin([repmat({'%.8g'},1,numel(a)+numel(b)+numel(c))]),a,b,c)
Run Code Online (Sandbox Code Playgroud)
给
2 4 5 8 6 7 88 9 12.8 41.3 13.7 16 18 20 10.1 17.5 49.123457
Run Code Online (Sandbox Code Playgroud)如果可以使用尾随空格,则不需要重复创建格式字符串,因为fprintf可以为所有输入自动回收它:
fprintf('%.8g ',a,b,c)
Run Code Online (Sandbox Code Playgroud)
给
2 4 5 8 6 7 88 9 12.8 41.3 13.7 16 18 20 10.1 17.5 49.123457
Run Code Online (Sandbox Code Playgroud)