绘制x-y轮廓时,它绘制单个点

问题描述 投票:-1回答:2

我已经尝试过多次创建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')

假定u的任何值。

matlab matlab-figure
2个回答
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默认情况下忽略输入的虚部。


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

© www.soinside.com 2019 - 2024. All rights reserved.