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 に答える