在MATLAB中虚部为空时的复数可视化

时间:2013-09-23 18:33:02

标签: matlab complex-numbers

在MATLAB R2012中:

>> rand(3) ; ans(1,1)=1+i

ans =
     1.0000 + 1.0000i   0.5060             0.9593          
     0.7513             0.6991             0.5472          
     0.2551             0.8909             0.1386

但是在R2013:

>> rand(3) ; ans(1,1)=1+i

ans =
     1.0000 + 1.0000i   0.9134 + 0.0000i   0.2785 + 0.0000i
     0.9058 + 0.0000i   0.6324 + 0.0000i   0.5469 + 0.0000i
     0.1270 + 0.0000i   0.0975 + 0.0000i   0.9575 + 0.0000i

我该如何解决?

问候。

2 个答案:

答案 0 :(得分:1)

如果没有选择尝试,我只能猜测你可能想要使用这种格式。

我最好的选择是format shortg,它可能隐藏虚部或只是让它不那么分散注意力:

rand(3) ; ans(1,1)=1+i
format shortg
rand(3) ; ans(1,1)=1+i

shortg而不是short。它试图不显示无关的零和小数。

答案 1 :(得分:0)

写这个的最好方法是作为一个新功能,只需输出你喜欢的格式。 示例:

function [ out ] = new_display( in )
for i=1:size(in,1)
    for j=1:size(in,2)
        fprintf('%.4f', real(in(i,j)));
        if(imag(in(i,j)))>0
            fprintf(' + %.4fi\t', imag(in(i,j)));
        else
            fprintf('\t\t\t');
        end
    end
    fprintf('\n');
end

给出:

>> new_display(ans)
0.8147 + 1.0000j    0.9134          0.2785          
0.9058          0.6324          0.5469          
0.1270          0.0975          0.9575  

通常,如果只输入ans,matlab会调用display()函数。您可以使用自己的函数重载此函数,但MathWorks表示这是一个坏主意(我同意)。

参考: