我正在尝试在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]并且每行都进行转换。
感谢您的帮助!
答案 0 :(得分:1)
您不想使用MATLAB的函数CART2POL吗?
如果你看一下它就这样做:
th = atan2(y,x);
r = hypot(x,y);
至于你的代码,它在语法和逻辑上有很多问题。
首先你不需要循环。 MATLAB专门设计用于矢量和矩阵。您必须使用.*
,./
和.^
运算符的元素乘法,除法和幂。
if X,Y;
也没有做任何事情。阅读文档如何正确使用if
。您预先分配M
但不使用它。该函数应该返回homework5
,但它没有在函数体中定义。你必须阅读有关功能的内容。确保将函数保存到具有相同名称Cartesian.m
的文件中,并保存在当前目录或MATLAB的路径中。