MATLAB 白噪聲
Ammar Ali
2023年1月30日
2021年7月4日
本教程將討論如何在 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')
輸出:
在上面的程式碼中,我們生成了白噪聲,並將其新增到一個正弦波中,結果如上圖所示。需要注意的是,白噪聲樣本的數量應該等於加入了噪聲的訊號的樣本數量;否則會出錯。你可以通過更改 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')
輸出:
在上面的程式碼中,我們在正弦波中加入了白噪聲,結果如上圖所示。你可以通過更改 dbW 中的功率和訊雜比來更改噪聲強度。檢視此連結以獲取有關 awgn()
函式的更多詳細資訊。
Author: Ammar Ali