2013-09-23 12 views
6

在MATLAB R2012:复数可视化文件时虚部为空在MATLAB

>> 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 

我怎样才能解决呢?

问候。

+5

为什么你需要它来隐藏虚部,如果是0?如果是出于输出目的,您可以编写自己的输出函数以完全按照您想要的格式显示它,例如使用fprintf(到屏幕或文件)。从R2013开始,内置显示功能在MATLAB中进行了更改,以显示即使为0的虚部 - 以便与Workspace显示保持一致,并且由于对于某些应用,希望看到虚部甚至为零。我不相信有任何选择可以隐藏想象的部分,但是你总是可以向mathworks提交一个建议。 – Brian

回答

1

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

我最好的选择是format shortg,它可能隐藏虚部或者干脆让它少分心:

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

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

+0

它不起作用,现在的输出是[this](http://i.imgur.com/5cz8jQZ.jpg)。 –

+0

@NicolásTorresa我认为这是通过改变格式可以获得的最低分散注意力。我知道它与制作复杂零件不一样,但是如果不应用复杂的解决方案,这可能会与标准输出一样好。如果你不介意调用一个函数来显示你的变量,你可以创建一个只打印相关数字的函数。 –

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调用显示()函数。你可以用你自己的函数来重载这个函数,但MathWorks说这是一个坏主意(我同意)。

编号:

+0

我认为如果(imag(in(i,j)))> 0''' if(imag(in(i,j)))〜= 0''' if(imag虚部)。 –