2013-09-23 13 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虛部)。 –