2016-09-23 37 views
0

私は最初の変換が成功したことを確認するために、デカルト変換をPolarに変換してからCartesianに戻す際に問題があります。デカルト座標を極座標に変換する - Matlab

しかし、何らかの理由で、第3象限の極座標を持つデカルト座標に戻しているときに、私のxyの値が間違っています。

は、例えば私のコードのこの部分を取る:

x = -2.075548439; 
y = -2.481775416; 

if x < 0 && y < 0 % QUAD 3 

    radius = sqrt((x^2) + (y^2)); 
    theta = atand((y*-1)/(x*-1)); 
    theta = (270 - theta); 
end 

x = radius * cosd(theta); 
y = radius * sind(theta); 

% answer: x = -2.481775416, and y = -2.075548439 

他の3つの象限に収まる他のすべてのxy変換が正しい順序でバックxyを置きます。

コードのこの部分は、しかし、正しい順序でバックxyを置くん:あなたは特別なケースをチェックする必要はありません

x = 3.130287009; 
y = -0.50613326; 

if x > 0 && y < 0 % QUAD 4 

    radius = sqrt((x^2) + (y^2)); 
    theta = atand((y*-1)/(x)); 
    theta = (360 - theta); 
end 

x = radius * cosd(theta); 
y = radius * sind(theta); 

% answer: x = 3.130287009, and y = -0.50613326 

答えて

0

。次のコードは、任意の象限のポイントに対して、デカルトからポーラーに正しく変換します。

x = -2.075548439; 
y = -2.481775416; 

radius = sqrt((x^2) + (y^2)); 
theta = atan2d(y, x); 

x = radius * cosd(theta); 
y = radius * sind(theta); 
+3

さらに、「help cart2pol'」、「help pol2cart'」というのは、彼の割り当てでない限り簡単です。 – Jeon

+0

ありがとう、それはうまくいき、私のスクリプトを大幅に短縮しました!私がしなければならなかった唯一のことは、残りのデータと一致するように、Excelにコピーして貼り付けた後、正の角度を得るために360からの負の角度を差し引くことでした。 – user1574598

関連する問題