MATLAB - 繪製正弦波



在 MATLAB 中繪製正弦波可以幫助你將週期性訊號視覺化並研究其特性。正弦波是訊號處理、通訊系統和許多其他領域的基礎。MATLAB 提供了簡單而強大的函式來生成和視覺化正弦波。

在 MATLAB 中,有多種函式可用於繪製正弦波,包括:

  • plot() 函式
  • fplot() 函式
  • ezplot() 函式
  • stem() 函式
  • polarplot() 函式

使用 plot() 函式

MATLAB 中的 plot() 函式是建立二維資料圖的基本工具。它允許你透過繪製點並將它們用線連線起來來視覺化資料中的關係和模式。使用 plot(),你可以建立各種型別的圖,包括線圖、散點圖等等,這使得它成為資料分析和視覺化的多功能工具。

語法

plot(X, Y)

MATLAB 中使用 **plot(X,Y)** 建立二維圖,其中 X 和 Y 是表示要繪製點的 x 和 y 座標的向量。X 和 Y 中每一對對應的元素定義圖上的一個點。plot() 函式用線連線這些點,從而建立線圖。

示例 1:使用 plot() 繪製正弦波

程式碼如下:

t = 0:0.01:2*pi; 
y = sin(t);
plot(t, y);
  • 在這個例子中,我們首先使用冒號運算子 (:) 定義一個時間向量 t,生成從 0 到 2*pi 的值,步長為 0.01。
  • 接下來,我們使用 sin() 函式計算與 t 中每個時間值對應的正弦值 y。
  • 最後,我們使用 plot() 函式繪製正弦波,其中 t 為 x 值,y 為 y 值。這將建立一個以時間為 x 軸、幅度為 y 軸的正弦波圖。

在 MATLAB 命令視窗中執行程式碼後,輸出結果如下:

plotting sine wave

示例 2:繪製頻率為 10 Hz 的正弦波

程式碼如下:

f = 10;     
a = 1;      
phi = 0;   
t = 0:1/(f*100):1;
y = a * sin(2*pi*f*t + phi);
plot(t, y);

在上例中:

  • 程式碼定義了一個頻率為 10 Hz (f = 10),幅度為 1 伏特 (a = 1),相位為 0 弧度 (phi = 0) 的正弦波。
  • 它生成一個從 0 到 1 秒的時間向量 t,步長對應於頻率,確保正弦波在一個指定的時間範圍內完成一個週期。
  • 正弦波方程 y = a * sin(2*pi*f*t + phi) 計算 t 中每個時間點的正弦波值,同時考慮頻率、幅度、相位和時間向量。
  • 最後,使用 plot() 函式繪製正弦波,並新增標籤和標題以提高畫質晰度。

執行程式碼後,輸出結果如下:

sine wave frequency

使用 fplot() 函式

MATLAB 中的 fplot() 函式用於在一個指定範圍內繪製函式。它對於視覺化數學函式(包括正弦波等三角函式)特別有用。與需要顯式計算函式值的 plot() 函式不同,fplot() 可以直接繪製 y = f(x) 形式的函式。

語法

fplot(fun, [xmin, xmax])

fplot(fun, [xmin, xmax]):其中 fun:要繪製的函式。它可以是匿名函式或函式控制代碼。[xmin, xmax]:應繪製函式的 x 值範圍。

示例:使用 fplot() 繪製正弦波

程式碼如下:

fun = @(x) sin(2*pi*60*x);
fplot(fun, [0, 1/60]);

在上例中

  • 我們有一個表示頻率為 60 Hz 的正弦波的匿名函式 fun。
  • fplot() 函式用於在一個週期 (0 到 1/60 秒) 內繪製正弦波。
  • x 軸表示時間(秒),y 軸表示正弦波的幅度。

執行程式碼後,輸出結果如下:

sine wave fplot

使用 ezplot() 函式

MATLAB 中的 ezplot() 函式用於繪製二維隱式和顯式方程。它對於視覺化數學表示式特別有用,無需顯式定義函式。ezplot() 可以處理單變數和引數表示式,使其成為各種繪圖任務的多功能工具。

語法

ezplot(equation)
ezplot(equation, [xmin, xmax])
  • **方程** - 要繪製的方程。它可以是顯式方程 y = f(x) 或隱式方程 f(x, y) = 0。
  • **[xmin, xmax]** - (可選)應繪製方程的 x 值範圍。

示例:使用 ezplot() 繪製正弦波

程式碼如下:

ezplot('sin(x)', [0, 2*pi])

上面的程式碼是:

  • ezplot() 函式用於在 [0, 2*pi] 範圍內繪製正弦波 y = sin(x)。
  • 方程 'sin(x)' 表示正弦函式 sin(x),其中 x 是自變數。
  • 範圍 [0, 2*pi] 指定繪製正弦波的 x 軸限制,涵蓋正弦函式的一個完整週期。

執行程式碼後,輸出結果為:

sine wave ezplot

僅使用 ezplot('sin(x)'),輸出結果如下:

ezplot sinx

使用 stem() 函式

MATLAB 中的 stem() 函式用於建立莖圖,它類似於傳統圖,但將資料表示為基線上的離散點。莖圖通常用於視覺化離散資料,例如時間序列資料或訊號樣本。

語法

stem(Y)
stem(X, Y)

**Y** - 要繪製的資料值的向量。

**X** - 與 Y 中的資料值對應的 x 座標的可選向量。

示例:正弦波的簡單莖圖

程式碼如下:

t = 0:0.1:2*pi;
y = sin(t);
stem(t, y);

在這個例子中,我們建立一個時間向量 t 並計算正弦值 y。

  • stem() 函式用於繪製正弦波,其中 t 為 x 座標,y 為 y 座標。
  • 該圖將正弦波的離散樣本表示為從 x 軸每個時間點上升的莖。

程式碼執行後的輸出如下:

simple stem plot

使用 polarplot() 函式

MATLAB 中的 polarplot() 函式用於創建極座標圖,這是一種使用極座標而不是笛卡爾座標的圖表。極座標圖尤其適用於視覺化週期性函式(例如正弦波)或以極座標形式自然表示的資料。

語法

polarplot(theta, rho)
  • theta − 每個資料點的角度向量(以弧度為單位)。
  • rho − 每個資料點到原點的徑向距離向量。

示例:使用 polarplot() 繪製正弦波

程式碼如下:

theta = 0:0.01:2*pi;
rho = sin(theta);
polarplot(theta, rho);

在這個例子中:

  • 我們定義一個角度向量 theta,其範圍從 0 到 2*pi(完整旋轉一圈),步長很小。
  • 我們將徑向距離 rho 計算為與 theta 中每個角度對應的正弦值。
  • polarplot() 函式用於在極座標中繪製正弦波,其中 theta 為角度,rho 為徑向距離。
  • 生成的圖將正弦波顯示為圍繞原點的螺旋線,其中到原點的距離表示每個角度下正弦波的幅度。

執行程式碼後,輸出結果如下:

plotting sinewave
廣告