中易网

怎么在matlab里编一个程序,把直角坐标的点 转换成 极坐标的点

答案:3  悬赏:0  
解决时间 2021-01-13 18:34
  • 提问者网友:贪了杯
  • 2021-01-12 18:01
怎么在matlab里编一个程序,把直角坐标的点 转换成 极坐标的点
最佳答案
  • 二级知识专家网友:空山清雨
  • 2021-01-12 18:53
首先,matlab 本身提供了把直角坐标转化为极坐标的函数 cart2pol。调用方法为:
[TH,R] = cart2pol(X,Y)  TH 是极坐标的角度坐标,R 是距离坐标。
[TH,R,Z] = cart2pol(X,Y,Z) 这个函数同时支持3维直角坐标到柱坐标的转换。


如果因为是作业或者练习,一定要自己写一个的话,请继续往下看。
考虑到这个程序的性质,编成一个函数比较适合。编写这个函数需要用到直角坐标与极坐标的数学关系。考虑到输入参数可能是一个向量或矩阵,关系式里面的运算符应该用加点运算符。


函数代码如下:
function [ TH,R ] = mycart2pol(X,Y)
%this function transforms corresponding elements of data
%stored in Cartesian coordinates X,Y to polar coordinates
%angle TH and radius R.
R=(X.^2+Y.^2).^0.5;
TH=atan(Y./X);
end


测试结果如下:

全部回答
  • 1楼网友:杯酒困英雄
  • 2021-01-12 20:39
引用themanisjimmy的回答:
首先,matlab 本身提供了把直角坐标转化为极坐标的函数 cart2pol。调用方法为:
[TH,R] = cart2pol(X,Y) TH 是极坐标的角度坐标,R 是距离坐标。
[TH,R,Z] = cart2pol(X,Y,Z) 这个函数同时支持3维直角坐标到柱坐标的转换。
如果因为是作业或者练习,一定要自己写一个的话,请继续往下看。
考虑到这个程序的性质,编成一个函数比较适合。编写这个函数需要用到直角坐标与极坐标的数学关系。考虑到输入参数可能是一个向量或矩阵,关系式里面的运算符应该用加点运算符。
函数代码如下:
function [ TH,R ] = mycart2pol(X,Y)
%this function transforms corresponding elements of data
%stored in Cartesian coordinates X,Y to polar coordinates
%angle TH and radius R.
R=(X.^2+Y.^2).^0.5;
TH=atan(Y./X);
end
测试结果如下:
atan返回值属于-pi/2到pi/2之间,所以这个答案的程序是有bug的,建议采用自带的函数,当然已采纳答案的思路还是很不错的
  • 2楼网友:英雄的欲望
  • 2021-01-12 19:11
有现成的函数啊:
[theta,r] = cart2pol(x,y);
如果一定要自己写:
theta = atan2(y,x);
r = sqrt(x.^2+y.^2);
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息