MATLAB 极坐标图

Ammar Ali 2024年2月15日
  1. MATLAB 极坐标图
  2. MATLAB 中的 3D 极坐标图
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 字符串来更改线条规格,其中第一个字符将线条样式设置为点线,第二个字符将标记设置为星号,第三个字符将线条颜色设置为绿色.

请注意,如果我们在绘图上绘制了多个数据集,则线条规格将改变图表中所有线条的规格,并且可能难以区分数据集或线条。

我们还可以使用名称-值对来更改绘图的属性,其中我们必须将属性的名称作为字符串传递,然后我们必须传递其值来更改该属性。我们可以更改 ColorLineStyleLineWidthMarkerMarkerSizeMarkerFaceColor 的属性。

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 平面上创建曲面图。用于将极坐标转换为笛卡尔坐标的算法如下图所示。

极地 2 笛卡尔

例如,让我们将极坐标图的极坐标转换为笛卡尔坐标,并使用 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() 函数的更多详细信息。

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

相关文章 - MATLAB Plot