2013-04-05 528 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

相关问题