2013-09-23 18 views
6

Trong MATLAB R2012:số Complex visualization khi phần ảo là null trong 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 

Nhưng trong 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 

Làm thế nào tôi có thể sửa chữa nó?

Trân trọng.

+5

Tại sao bạn cần nó để che giấu phần ảo nếu nó 0? Nếu đó là mục đích đầu ra, bạn có thể viết hàm đầu ra của riêng mình để hiển thị nó theo đúng định dạng bạn muốn, ví dụ: sử dụng fprintf (vào màn hình hoặc tệp). Bắt đầu từ R2013, chức năng hiển thị tích hợp đã được thay đổi trong MATLAB để hiển thị các phần ảo ngay cả khi chúng là 0 - để nhất quán với màn hình Workspace và vì một số ứng dụng mong muốn thấy phần ảo ngay cả khi nó bằng không. Tôi không tin rằng có bất kỳ tùy chọn để ẩn phần tưởng tượng, nhưng bạn luôn có thể gửi một đề nghị để mathworks. – Brian

Trả lời

1

Nếu không có tùy chọn để thử, tôi chỉ có thể đoán rằng bạn có thể muốn chơi xung quanh với định dạng.

đặt cược tốt nhất của tôi sẽ là format shortg, nó có thể che giấu phần ảo hoặc đơn giản là làm cho nó ít mất tập trung:

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

Có nghĩa là thay vì shortgshort. Nó cố gắng không hiển thị số không và số thập phân không liên quan.

+0

Nó không hoạt động, đầu ra bây giờ là [this] (http://i.imgur.com/5cz8jQZ.jpg). –

+0

@ NicolásTorresa Tôi nghĩ rằng đó là số lượng tối thiểu của sự phân tâm bạn có thể nhận được bằng cách chỉ thay đổi định dạng. Tôi biết nó không giống như làm cho phần phức tạp biến mất, nhưng không áp dụng một giải pháp phức tạp, điều này có thể là tốt như nó được cho đầu ra tiêu chuẩn. Nếu bạn không nhớ gọi một hàm để hiển thị các biến của mình, bạn có thể tạo một hàm chỉ in các số có liên quan. –

0

Cách tốt nhất để viết điều này sẽ là một hàm mới chỉ đơn giản là kết quả đầu ra theo định dạng bạn muốn. Ví dụ:

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 

Cung cấp:

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

Thông thường, nếu bạn chỉ cần gõ ans, matlab gọi display() chức năng. Bạn có thể quá tải chức năng này với của riêng bạn, nhưng MathWorks nói rằng đó là một ý tưởng tồi (tôi đồng ý).

Ref:

+0

Tôi nghĩ '' 'if (tưởng tượng (trong (i, j)))> 0''' nên là' '' nếu (tưởng tượng (trong (i, j))) ~ = 0''' (vì âm phần ảo). –

Các vấn đề liên quan