我是Matlab和一般编程的新手。我写的笛卡尔到极坐标转换函数不起作用。
syms x y
function [r,theta]=something[x,y]
r=(x^2+y^2)^.5
theta=atan(x/y)
end
答案 0 :(得分:3)
您要做的是创建一个函数脚本文件,但在文件开头有一个非函数声明语句。你不能这样做。因此,您需要删除代码开头的syms x y
语句。此外,您还没有正确宣布您的功能。您需要使用圆形括号,而不是方括号来定义输入参数。
我还会使用atan2
代替atan
,因为它会找到笛卡尔坐标的正确四象限反正切。另外,使用sqrt
而不是^.5
来取平方根。它更稳定。另外,要正确处理矢量输入,您需要确保x
和y
在.^2
计算中使用r
,而不是^2
。因此,请改为:
function [r,theta]=something(x,y) %// Change
r=sqrt(x.^2 + y.^2); %// Change
theta=atan2(y, x); %// Change
end
将其放入名为something.m
的文件中,然后您可以进入命令提示符并执行此操作:
[r,theta] = something(x,y);
x
和y
是笛卡尔坐标的x
和y
值。有什么好处x
和y
可以是单个值,向量或任何大小的矩阵。
答案 1 :(得分:2)
您可以使用cart2pol
功能:
[theta, rho] = cart2pol(x, y)
或者这样做:
theta = atan2(y, x) % use atan2() instead of atan()
rho = sqrt(x.^2 + y.^2) % use sqrt() instead of .^5
答案 2 :(得分:0)