在matlab中绘制复数值的椭圆

时间:2016-06-01 07:37:51

标签: matlab plot 3d matlab-figure ellipse

我正在尝试绘制粒子的椭圆轨迹,但是我的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参数的虚部 请帮帮我。

2 个答案:

答案 0 :(得分:1)

如果您只想绘制虚数, 请将代码plot(X,Y);更改为plot(X,imag(Y))

如果有实际价值,plot(X,real(Y))

如果您对复数的大小感兴趣,plot(X,abs(Y))

答案 1 :(得分: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');