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