MATLAB 极坐标图
本教程将讨论使用 MATLAB 中的 polarplot()
函数创建极坐标图。
MATLAB 极坐标图
在极坐标系上创建极坐标图,该坐标系是一个二维坐标系,显示点到原点的距离及其相对于 x 轴的角度。
我们可以使用 Matlab 的 polarplot()
函数来创建一个极坐标图。polarplot()
函数的基本语法如下。
polarplot(My_theta,My_rho)
上面的语法将根据每个点的角度 My_theta
以及它们与存储在 My_rho
变量中的原点的距离创建一个极坐标图。如果两个输入是向量,它们应该具有相同的长度。
如果两个输入都是矩阵,它们应该具有相同的大小,在这种情况下,第一个矩阵的每一列都将与第二个矩阵的每一列相对应。如果一个输入是向量而另一个输入是矩阵,则向量的长度应等于矩阵中存在的列或行的长度,并且矩阵的每一列都将针对向量进行绘制。
如果 polarplot()
函数的单个输入是矩阵,该函数将在极坐标图上绘制多条不同颜色的线。例如,让我们使用 polarplot()
函数在极坐标上绘制两个向量。
请参阅下面的代码。
clc
clear
My_theta = 0:0.01:2*pi;
My_rho = sin(2*My_theta).*cos(2*My_theta);
polarplot(My_theta,My_rho)
输出:
在上面的代码中,我们使用了两个向量,我们可以在输出中看到该图显示了点到原点的角度和距离。我们还可以使用 polarplot()
函数在单个图上绘制多条数据线。
我们必须将每一行的数据作为矩阵中的一列传递,polarplot()
函数将绘制第一个矩阵的第一列和第二个矩阵的第一列,依此类推。如果我们想对一个维度使用相同的值,例如距离或角度,我们可以使用该维度的向量。
例如,让我们使用向量和矩阵在同一个极坐标图上绘制多条线。请参阅下面的代码。
clc
clear
My_theta = 0:0.01:2*pi;
My_rho1 = sin(2*My_theta).*cos(2*My_theta);
My_rho2 = cos(2*My_theta).*cos(2*My_theta);
My_rho = [My_rho1; My_rho2];
polarplot(My_theta,My_rho)
legend('data1','data2')
输出:
在上面的代码中,我们为半径创建了两个向量,然后将它们作为两行存储在一个矩阵中,并且 polarplot()
函数将这两行与同一个角度向量进行绘制。我们使用 legend()
函数根据数据为绘图添加图例。
我们可以在输出中看到极坐标图中有两条不同颜色的线,因为 polarplot()
函数为每个数据集赋予了不同的颜色,以便于区分它们。默认情况下,角度以度为单位,但我们也可以使用 Matlab 的 deg2rad()
函数将其转换为弧度。
我们还可以仅使用单个向量创建极坐标图,该向量将使用 polarplot()
函数定义从原点开始的点的半径。该函数将以相等的间隔绘制半径点与从间隔 0 到 2pi
所取角度的关系。
我们还可以设置线条的规格,如线条样式、标记和颜色。我们可以在单个字符串中传递所有三个参数,并将其传递到 polarplot()
函数中以更改线规格。
我们可以使用 -
字符设置线条样式为实线,使用 --
字符设置虚线,使用:
字符设置虚线,使用 -.
设置点划线特点。标记将放置在数据点的顶部,我们可以使用诸如 o
代表圆形、*
代表星号、d
代表菱形、p
代表五角星、h
代表卦等。
我们可以使用颜色名称或颜色的第一个字母来设置线条的颜色,例如 r
代表红色,g
代表绿色等等。例如,让我们使用单个字符串更改极坐标图的线规格。
请参阅下面的代码。
clc
clear
My_theta = 0:0.1:2*pi;
My_rho = cos(2*My_theta).*cos(2*My_theta);
polarplot(My_theta,My_rho,':*g')
输出:
在上面的代码中,我们使用 :*g
字符串来更改线条规格,其中第一个字符将线条样式设置为点线,第二个字符将标记设置为星号,第三个字符将线条颜色设置为绿色.
请注意,如果我们在绘图上绘制了多个数据集,则线条规格将改变图表中所有线条的规格,并且可能难以区分数据集或线条。
我们还可以使用名称-值对来更改绘图的属性,其中我们必须将属性的名称作为字符串传递,然后我们必须传递其值来更改该属性。我们可以更改 Color
、LineStyle
、LineWidth
、Marker
、MarkerSize
和 MarkerFaceColor
的属性。
Color
属性设置线条的颜色,我们可以传递一个 RGB 三元组值、十六进制颜色代码、颜色名称或颜色名称的第一个字母。LineStyle
属性设置线条的样式,可用的线条样式如上所述。
LineWidth
属性设置线条的宽度,默认情况下,它的值设置为 0.5
,但我们也可以将其设置为任何正数。Marker
属性设置在数据点顶部使用的标记,默认情况下,其值设置为无,但我们可以使用上面讨论的标记符号进行设置。
MarkerSize
属性用于设置标记的大小,默认情况下其值设置为 6,我们可以将其更改为任何正值。MarkerFaceColor
属性设置标记填充颜色,或者换句话说,它将填充绘图中使用的标记,默认情况下,其值设置为 none
,但我们可以使用其 RGB 三元组将其设置为任何颜色值、十六进制代码或颜色名称。
例如,让我们更改上面提到的属性。请参阅下面的代码。
clc
clear
My_theta = 0:0.1:2*pi;
My_rho = cos(2*My_theta).*cos(2*My_theta);
polarplot(My_theta,My_rho,'Color','red','LineStyle',':','Marker','o','LineWidth',2,'MarkerSize',10,'MarkerFaceColor','green')
输出:
我们还可以通过将自定义轴添加为 polarplot()
函数中的第一个参数来将它们添加到绘图中。我们还可以设置轴的属性,例如半径线和文本的颜色、轴刻度标签等。
我们必须使用 gca
命令获取当前轴,然后我们可以使用这些轴来更改轴的属性。我们要在 axes 对象后面加一个点,然后加上属性名,等号后面就可以设置属性值了。
例如,让我们更改极坐标图中半径线的颜色。请参阅下面的代码。
clc
clear
My_theta = 0:0.1:2*pi;
My_rho = cos(2*My_theta).*cos(2*My_theta);
polarplot(My_theta,My_rho)
x = gca;
x.RColor = 'red';
输出:
检查此链接以获取有关极轴属性的更多详细信息。
MATLAB 中的 3D 极坐标图
如果我们想在 3D 平面中创建极坐标图,我们必须将极坐标更改为笛卡尔坐标,因为极坐标只有二维,而我们需要三个维度来创建 3D 图。
我们可以使用 pol2cart()
函数将极坐标转换为笛卡尔坐标,然后使用 surf()
函数在 3D 平面上创建曲面图。用于将极坐标转换为笛卡尔坐标的算法如下图所示。
例如,让我们将极坐标图的极坐标转换为笛卡尔坐标,并使用 surf()
函数创建一个 3D 图。请参阅下面的代码。
clc
clear
My_theta = 0:0.1:2*pi;
My_rho = sin(My_theta);
t = meshgrid(linspace(0,2*pi,63));
[x,y,z] = pol2cart(My_theta, My_rho, t);
surf(x,y,z)
输出:
在上面的代码中,我们在 pol2cart()
函数中使用了三个输入。第一个输入是角度向量,第二个是点到原点的距离向量,第三个矩阵是我们要在其上创建 3D 图的网格。
上图与极坐标图无关,因为我们在上图中没有角度和半径尺寸。
在极坐标图中,我们可以看到一点关于原点的角度和半径,但在上面的图中,这是不可能的。当我们只想获取点的角度和半径信息时,不需要创建 3D 极坐标图;我们可以将 polarplot()
函数用于 2D 极坐标图。
查看此链接了解有关 polarplot()
函数的更多详细信息。查看此链接了解有关用于创建 3D 绘图的 surf()
函数的更多详细信息。