绘制x-y轮廓而不是单点

时间:2018-02-09 14:52:29

标签: matlab matlab-figure

我已多次尝试制作xy图。 每次我只得到一个点,而不是我想要的轮廓。它应该是圆弧或椭圆弧。

我目前的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')

但我不知道'你'的价值在这里。

2 个答案:

答案 0 :(得分:3)

u是一个标量,因此您正在绘制单点。

使u成为数组

a = 8*pi/5;    
u = 1:0.02:2;    % Your u values as an array
z = 0.15;

xy计算

中逐步完成您的操作
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') 

注意:您的xy计算会为这些值提供复杂的结果,默认情况下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')

The Image of the plot of the above-executed code is shown here