如何在Matlab中根据theta/rho数据绘制折线图

3
作为标题
我只有theta/rho数据
直线方程式为
x*cos(theta)+y*sin(theta)=rho

如何在Matlab中使用这些数据绘制线条?
是否有任何函数可以将极角和极径作为输入?
谢谢。

我认为答案就在你的问题中 - 只需在输入theta和rho值并重新排列为y = ...后绘制方程式x*cos(theta)+y*sin(theta)=rho即可。编辑:使用此链接绘制方程式http://www.mathworks.com.au/help/matlab/ref/fplot.html。 - user993683
3个回答

4

只需要使用一些简单的代数方法来找出yx之间的关系。
取一些x的范围:

 x = -10:10;
 y = (rho - x* cos(theta) )/ sin(theta);
 plot(x,y)

1

您可以直接使用内置的polar function

polar(theta,rho)函数创建一个极坐标图,其中角度theta与半径rho相对应。theta是从x轴到以弧度指定的半径向量的角度;rho是以数据空间单位指定的半径向量的长度。

您还可以使用pol2cart()将极坐标转换为笛卡尔坐标,然后使用常规的plot(x,y)函数。

[X,Y] = pol2cart(THETA,RHO)函数将存储在THETA和RHO相应元素中的极坐标数据转换为二维笛卡尔坐标或xy坐标。数组THETA和RHO必须具有相同的大小(或者可以是标量)。THETA中的值必须以弧度为单位。

还有一个cart2pol()函数可以进行反向转换。

[THETA,RHO] = cart2pol(X,Y)函数将存储在数组X和Y的相应元素中的二维笛卡尔坐标转换为极坐标。


我认为在这种情况下,rhotheta是常数参数。变化的是**(x,y)**。 - Andrey Rubshtein
1
@Andrey 你可能是正确的。列出的方程式看起来不像标准的极坐标转换。然而,他随后询问是否有使用theta和rho的任何函数,这让我联想到常规的极坐标。 - Aero Engy

0

theta是以度数为单位的,因此应该使用sindcosd代替sincos

x = -10:10;
y = (rho - x* cosd(theta) )/ sind(theta);
plot(x,y)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接