2013-04-05 566 views
0

我試圖在MATLAB中創建一個採用笛卡爾座標並將其轉換爲極座標的函數。如何將直角座標轉換爲極座標使用函數

function [homework5] = Cartesian(X,Y) 

M = size(X,1) 

for N=1:M 
if X,Y; 

r=sqrt(X^2+Y^2) 
theta=atan(Y/X) 


else 
disp('input incorrect') 


end 

if r > 10 
    disp('Far from Origin') 
else 
    disp('Close to Origin') 

end 

end 

我對MATLAB非常陌生,我的答案和閱讀教程e.t.c的搜索已被證明是徒勞的。

我把它轉換成1座標就好了,但我需要一次轉換多個座標(因此forloop),但我無法得到它!用戶需要能夠像這樣輸入一個數組:>> Cartesian = [2,3; 4,5; 6,7]並且每行都被轉換。

感謝您的幫助!

回答

1

難道你不想使用MATLAB的函數CART2POL

如果你看裏面只是這樣做:

th = atan2(y,x); 
r = hypot(x,y); 

至於你的代碼,它與語法和邏輯的許多問題。

首先你不需要循環。 MATLAB專門設計用於處理矢量和矩陣。您必須使用.*,./.^運營商使用元素明確的乘法,刪除和權力。

另外if X,Y;不會做任何事情。閱讀文檔如何正確使用if。您預先分配M但不使用它。該函數應該返回homework5,但它沒有在函數體中定義。你必須閱讀功能。確保該函數保存在文件中,名稱相同,名稱爲Cartesian.m,位於當前目錄或MATLAB路徑中。

+0

是的,我剛纔看到了,但我的教授顯然希望輸入實際的方程式。我不明白爲什麼它有所作爲,但這是他想要的方式。 – Kerblooy 2013-04-05 16:03:23

+1

也許你的教授希望你弄清楚如何以編程方式轉換座標,而不是隻使用一些特定的功能。 – Guarita 2013-04-05 20:51:14

+0

我認爲你應該繼續前進的方式:r = sqrt(X^2 + Y^2);和theta = atan(Y/X));但你必須注意X是負的點。 ATAN功能僅輸出從-pi/2到pi/2(其中X爲正數)的角度。您應該添加一些'if'語句來驗證角度是在2或3象限(X <0)上,然後如果X爲負值,則將'pi'添加到所得角度。 (注意atan(X/Y)將返回相同的值,對於X = -1,Y = -2和對於X = 1,Y = 2)。 – Guarita 2013-04-05 20:59:06

相關問題