我已经尝试过多次创建x
和y
图。每次我只得到一个点,而不是我想要的轮廓。它应该是圆弧或椭圆形。
我当前的Matlab代码:
a = 8*pi/5;
u = 1;
z=0.15;
x = cosh(u)*sqrt(1 - (sin(a)*sin(a)*sinh(u)*sinh(u))/square((sqrt(1-z)*cosh(u) + cos(a))));
y= -1*((sinh(u)*sinh(u)*sin(a))/(sqrt(1-z)*cosh(u) + cos(a)));
plot(x,y,'o')
假定u
的任何值。
u
是标量,因此您正在绘制单个点。
使u
成为数组
a = 8*pi/5;
u = 1:0.02:2; % Your u values as an array
z = 0.15;
并在x
和y
计算中按元素进行操作
x = cosh(u).*sqrt(1 - (sin(a).*sin(a).*sinh(u).*sinh(u))./square((sqrt(1-z).*cosh(u) + cos(a))));
y= -1.*((sinh(u).*sinh(u).*sin(a))./(sqrt(1-z).*cosh(u) + cos(a)));
[使用不仅仅是点的线型(例如'o'
就是这样,例如,对于在每个值处都带有圆圈的线,可以使用]
plot(x,y,'-o')
注意:您的x
和y
计算得出这些值的复杂结果,并且plot
默认情况下忽略输入的虚部。
我忘记了u
应该是一个数组,以获取图中的点
a = 8*pi/5;
% assigning an array from 1 to 2 with stepsize = 0.1
u = 1:0.02:2;
z = 0.15;
因为,u
是一个数组,所以乘法应该是逐元素的(.*)
x = cosh(u).*sqrt(1 - (sin(a).*sin(a).*sinh(u).*sinh(u))./square((sqrt(1-z).*cosh(u) + cos(a))));
y= -1.*((sinh(u).*sinh(u).*sin(a))./(sqrt(1-z).*cosh(u) + cos(a)));
% Ignoring the complex value since it only provide some phase
plot(abs(x),abs(y),'r');
hold on
plot(real(x),real(y),'g')
legend('abs values','real Values')