MATLAB 極座標圖

Ammar Ali 2023年1月30日
  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