我已多次尝试制作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')
但我不知道'你'的价值在这里。
答案 0 :(得分:3)
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
会忽略输入的虚部。
答案 1 :(得分:0)
我忘记了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')