6

在 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

我该如何解决?

问候。

4

2 回答 2

1

如果没有尝试的选项,我只能猜测您可能想尝试使用该格式。

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

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

是的,shortg而不是short. 它尽量不显示不相关的零和小数。

于 2013-09-24T12:20:22.447 回答
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 说这是个坏主意(我同意)。

参考:

于 2014-05-20T01:13:21.873 回答