【问题标题】:While Plotting x-y contour, it plot a single point在绘制 x-y 轮廓时,它绘制一个点
【发布时间】:2018-02-09 14:52:28
【问题描述】:

我曾多次尝试创建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的任何值。

【问题讨论】:

  • u 是一个标量值,因此xy 都是标量值,而不是向量...当然情节只是一个点...

标签: matlab matlab-figure matlab-compiler


【解决方案1】:

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 默认会忽略输入的虚部。

【讨论】:

  • 这取决于你想如何绘制它。如果你有复杂的x y,那么你有4个维度不容易显示。如果只有一个复杂,则使用 plot3 绘制 3D 图,其中一个维度很复杂......这完全取决于您的预期输出。
  • 修复后的代码还是和图片不一样。
【解决方案2】:

我忘了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')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 2012-09-22
    • 2021-09-07
    • 2016-02-15
    • 2023-03-20
    相关资源
    最近更新 更多