2013-02-01 64 views
0

我試圖繪製此功能:繪製MATLAB中的複雜函數(極座標)?

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方法,但它沒有起作用。 有人可以幫我嗎? 謝謝!

回答

2

你的問題是在你的功能。 k包含虛數,因爲這樣:

sin(3*t).^(0.8) 

如果你想確保它不包含虛數,則需要增加b。底線是,修正你的公式。我只能假設你的意思是這樣,但可能有其他解決方案。本質上,我認爲你的意思是採取1罪的指數,而不是罪。

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

這給出瞭如下圖(從八度,但它應該是相同的)

enter image description here

我想通了這一點通過`圖(K)。如果k包含虛數,它將繪製真實與虛構分量。如果它純粹是真實的,它將繪製線條與時間的關係。

+2

非常感謝,你說得對,問題出在我的公式上。我按照你的建議修復了它,並且它完美地工作。 –