MATLAB 白噪聲

Ammar Ali 2024年2月15日
  1. 使用 MATLAB 中的 wgn() 函式生成白噪聲
  2. 在 MATLAB 中使用 awgn() 函式生成白噪聲
MATLAB 白噪聲

本教程將討論如何在 MATLAB 中使用 awgn()wgn() 函式生成白噪聲。

使用 MATLAB 中的 wgn() 函式生成白噪聲

如果要向訊號中新增白噪聲,可以使用 wgn() 函式,該函式生成以伏特為單位的高斯白噪聲樣本。該函式的第一個和第二個引數是白噪聲的 m×n 矩陣,第三個引數是噪聲的功率,第三個引數是負載的阻抗,以歐姆為單位,依此類推。例如,讓我們生成一個 101×1 的高斯白噪聲矩陣,其負載功率為 -20 dbW,並將其新增到正弦波中。請參考下面的程式碼。

t = 1:0.01:2;
x = sin(2*pi*t);
figure
plot(t,x)
w_noise = wgn(1,101,-20);
hold on
plot(t,(x+w_noise))
legend('Sine Wave','Sine Wave with Noise')

輸出:

在 matlab 中使用 wgn 函式的白噪聲

在上面的程式碼中,我們生成了白噪聲,並將其新增到一個正弦波中,結果如上圖所示。需要注意的是,白噪聲樣本的數量應該等於加入了噪聲的訊號的樣本數量;否則會出錯。你可以通過更改 dbW 中的功率來更改噪聲強度。檢查此連結以獲取有關 wgn() 函式的更多詳細資訊。

在 MATLAB 中使用 awgn() 函式生成白噪聲

如果要向訊號中新增白噪聲,可以使用 awgn() 函式,該函式將高斯白噪聲新增到輸入訊號中。該函式的第一個引數是輸入訊號,第二個引數是訊雜比,第三個引數是輸入訊號功率,依此類推。例如,讓我們將訊雜比為 2 且訊號功率為 -2 dbW 的白噪聲新增到正弦波中。請參考下面的程式碼。

t = 1:0.01:2;
x = sin(2*pi*t);
figure
plot(t,x)
w_noise = awgn(x,2,-20);
hold on
plot(t,(x+w_noise))
legend('Sine Wave','Sine Wave with Noise')

輸出:

白噪聲在 matlab 中使用 awgn 函式

在上面的程式碼中,我們在正弦波中加入了白噪聲,結果如上圖所示。你可以通過更改 dbW 中的功率和訊雜比來更改噪聲強度。檢視此連結以獲取有關 awgn() 函式的更多詳細資訊。

作者: 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