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 非常陌生,我对答案和阅读教程等的搜索被证明是徒劳的。

我有它可以很好地转换1个坐标的位置,但是我需要一次转换多个坐标(因此是forloop)但我无法得到它!用户需要能够输入这样的数组:>>Cartesian = [2,3;4,5;6,7] 并转换每一行。

谢谢你的帮助!

4

1 回答 1

1

你不想使用 MATLAB 的函数CART2POL吗?

如果你看里面,只需这样做:

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

至于您的代码,它在语法和逻辑方面存在许多问题。

首先,您不需要循环。MATLAB 专门设计用于处理向量和矩阵。.*您必须使用,./和运算符使用逐元素乘法、除法和幂.^

if X,Y;什么都不做。阅读文档如何if正确使用。您预先分配M但不使用它。该函数应该返回homework5,但它没有在函数体中定义。您必须阅读有关功能的信息。确保将函数保存到同名文件中,并保存Cartesian.m在当前目录或 MATLAB 路径中。

于 2013-04-05T15:57:51.673 回答