【问题标题】:Plotting complex function in MATLAB (polar)?在 MATLAB(极坐标)中绘制复杂函数?
【发布时间】:2013-02-02 16:13:44
【问题描述】:

我试图绘制这个函数:

t=linspace(0,2*pi,100);
a=input('a= ');
b=input('b= ');
c=input('c= ');
k = a*(1-(sin(3*t)).^(2*b))+c;
polar(t,k)

% a=2.6
% b=0.4
% c=5

每次,我都会收到以下消息:

警告:复数 X 和/或 Y 参数的虚部被忽略。

我已经尝试过这样的 pol2cart 方法:

t=linspace(0,2*pi,100);
a=input('a= ');
b=input('b= ');
c=input('c= ');
k = a*(1-(sin(3*t)).^(2*b))+c;
[x,y] = pol2cart(t,k);
plot(x,y)

我又收到了同样的信息。 我试图将它转换为球坐标,它没有工作。我也尝试了论坛答案中建议的 arrayfun 方法,但效果不佳。 有人可以帮帮我吗? 谢谢!

【问题讨论】:

    标签: matlab plot


    【解决方案1】:

    您的问题在于您的功能。 k 包含虚数,因为:

    sin(3*t).^(0.8)
    

    如果要确保它不包含虚数,则需要增加b。底线是,修正你的公式。我只能假设您的意思是这样的,但可能还有其他解决方案。本质上,我认为您的意思是取 1-sin 的指数,而不是 sin。

    k=a*((1-sin(3*t)).^(2*b))+c;
    

    这给出了以下情节(来自 Octave,但应该是相同的)

    我通过 `plot(k).如果 k 包含虚数,它将绘制实部与虚部。如果它是纯真实的,它将绘制线与时间的关系。

    【讨论】:

    • 非常感谢,您说的完全正确,问题出在我的公式中。我按照你的建议修好了,效果很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 2011-07-12
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多