在MATLAB(极坐标)中绘制复杂函数?

时间:2013-02-01 23:29:09

标签: matlab plot

我试图绘制这个函数:

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方法,它也没有用。 有人可以帮帮我吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

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

sin(3*t).^(0.8)

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

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

这给出了下面的图(从Octave,但它应该是相同的)

enter image description here

我用'plot(k)来解决这个问题。如果k包含虚数,它将绘制实部与虚部。如果它是纯粹的真实,它将绘制线与时间的关系。