2016-06-01 82 views
1

我想繪製一個粒子的橢圓軌跡,但我的matlab代碼運行並給了我警告,我試圖繪製虛數值。我怎樣才能消除這個錯誤? 我Matlab代碼如下:繪製橢圓在matlab中的複雜值

% plot of trajectory of the particle in flexural gravity wave 
    U =5; 
    t=1; 
    y1=0; 
    h=50; 
    k=2*pi/100; 
    w=pi; 
    X= (-80*pi:pi:80*pi); 
    Y= (-80*pi:pi:80*pi); 
    H=1; 
    A= (H/2)*cosh(k*(h+y1))/sinh(k*h); 
    B= (H/2)*sinh(k*(h+y1))/sinh(k*h); 
    Y = B.* ((1-((X-U*t)./A).^2).^(1/2)); 
    plot(X,Y); 
    xlabel('X'); 
    ylabel('Y'); 

警告MATLAB顯示的是: 警告:忽略 複雜的X和/或Y參數的虛部請幫我出這一點。

回答

1

如果要僅繪製虛數, 請更改代碼,plot(X,Y);plot(X,imag(Y))

如果是實際價值,plot(X,real(Y))

如果您對複數的數量級感興趣,plot(X,abs(Y))

+0

感謝您的幫助!但我試圖繪製真正的價值觀。 –

+0

在這種情況下,plot(X,real(Y)) – KKS

+0

但是,您的Y的實際值都爲零,即使您使用plot(X,Y),matlab也會自動繪製實際值並且僅帶有警告。 – KKS

0

我得到了我的問題的答案。 我可以通過使用橢圓的一般座標來繪製它,即使用x = a cos(t)和y = a sin(t)。那真的有效。

% plot of trajectory of the particle in flexural gravity wave 
U = 5; 
t = 1; 
y1 = 0; 
h = 50; 
k = 2*pi/100; 
w = pi; 
x0 = U*t; 
y0 = 0; 
H = 1; 
A = (H/2)*cosh(k*(h+y1))/sinh(k*h); 
B = (H/2)*sinh(k*(h+y1))/sinh(k*h); 
z = -2*pi:0.01:2*pi; 
X = x0 + A*cos(z); 
Y = y0 + B*sin(z); 
plot(X,Y); 
xlabel('X'); 
ylabel('Y');