如何从带有n个小数位的单元格数组中显示格式化数字

时间:2013-12-04 08:42:08

标签: matlab format cell-array

我有一个包含数字和字符串的单元格数组。我想打印单元格数组,以便在小数点后只能看到5个数字。例如:

c{1, 1} = pi;
c{2, 1} = pi / 2;
c{3, 1} = pi / 4;
c{4, 1} = 2 ^ 0.5;

使用format long后,这就是我收到的内容:

>> c
c = 
    [3.141592653589793]
    [1.570796326794897]
    [0.785398163397448]
    [1.414213562373095]

但我希望输出结果为:

>> c
c = 
    [3.14159]
    [1.57079]
    [0.78539]
    [1.41421]

3 个答案:

答案 0 :(得分:3)

一种可能的解决方案是生成格式化的字符串,例如

sprintf('%.5f\n', c{:})

对于您的示例,结果将是:

ans =
    3.14159
    1.57080
    0.78540
    1.41421

format不同,生成自己的字符串可以将小数点后显示的位数调整为您想要的任何值。

如果您的单元格数组包含非数字值(例如字符串),则可以执行以下操作:

c_fmt = c;                                              %// Temporary cell array
idx = cellfun(@isnumeric, c(:));                        %// Locate numbers
c_fmt(idx) = cellfun(@(x){sprintf('%.5f', x)}, c(idx)); %// Format as strings

基本上将数字转换为格式化字符串。显示结果c_fmt应该为您提供可接受的输出。

答案 1 :(得分:0)

转到文件 - >首选项从左侧列表中选择“命令窗口” 将“文字显示”从'long'更改为'short'

c = 
[3.1416]
[1.5708]
[0.7854]
[1.4142]

答案 2 :(得分:0)

使用compose

disp(cell2mat(compose('%1.4f',cell2mat(c))))

这将给您每行一个字符。要将其转换为数组:

str2num(cell2mat(compose('%1.4f',cell2mat(c))))