matlab - 如何在matlab中使用fprintf简短地编写多个变量?

标签 matlab printf

我的代码是这样的

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)

是否可以在 fprintf 中以较短的形式编写转换(%d....%f)而不是重复多次?

或者是否有任何其他命令可以用来将其写入文件?

最佳答案

此答案假设您不需要尾随小数零。也就是说,[4 4.1] 应该打印为 4 4.1,而不是 4 4.100004.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
  • 您可以使用 repmatstrjoin 动态构建格式字符串。此外,您可以使用 format specifier %g,它会自动打印不带小数的整数值:

    fprintf(strjoin([repmat({'%g'},1,numel(a)+numel(b)+numel(c))]),a,b,c)
    

    给予

    2 4 5 8 6 7 88 9 12.8 41.3 13.7 16 18 20 10.1 17.5 49.1235
    
  • 如果您需要指定多个有效数字,请避免尾随小数零:

    fprintf(strjoin([repmat({'%.8g'},1,numel(a)+numel(b)+numel(c))]),a,b,c)
    

    给予

    2 4 5 8 6 7 88 9 12.8 41.3 13.7 16 18 20 10.1 17.5 49.123457
    
  • 如果您可以使用尾随空格,则无需构建带有重复的格式字符串,因为 fprintf 可以自动 recycle 它为所有输入:

    fprintf('%.8g ',a,b,c)
    

    给予

    2 4 5 8 6 7 88 9 12.8 41.3 13.7 16 18 20 10.1 17.5 49.123457 
    

关于matlab - 如何在matlab中使用fprintf简短地编写多个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55061127/

相关文章:

function - matlab:fmincon,将变量传递给nonlcon

matlab - 如何在 MATLAB 的子图中显示文本/字符串行?

c - 除非换行符在格式字符串中,否则为什么 printf 在调用后不刷新?

c - 使用 printf() 的格式说明符 "%*.*s"绘制菱形

algorithm - 使用傅立叶分析将函数拟合到数据

matlab - 在 MatLab 中修剪二进制矩阵

Matlab 图形绘制 - 带标签的图例和曲线

linux - 如何停止 GCC 从 obj 文件中的字符串文字中剥离尾随换行符?

C - printf 输出说明 ("%d %d\n",k=1,k=3);

c - 如何在C中以十六进制字节格式打印 float ?