0

我试图绘制这个函数:

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 方法,但效果不佳。有人可以帮帮我吗?谢谢!

4

1 回答 1

2

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

sin(3*t).^(0.8)

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

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

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

在此处输入图像描述

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

于 2013-02-01T23:39:04.290 回答