noisegen matlab,awgn白噪声添加原理
在matlab中無論是wgn還是awgn函數,實質都是由randn函數產生的噪聲。即:wgn函數中調用了randn函數,而awgn函數中調用了wgn函數。
根據awgn的實現代碼可以知道”向已知信號添加某個信噪比(SNR)的高斯白噪聲“,即:awgn(x,snr,’measured’,'linear’),命令的作用是對原信號x添加信噪比(比值)為SNR的噪聲,在添加之前先估計信號x的強度。
這里涉及三個問題:在awgn這個函數中,SNR是如何計算的?什么是信號的強度?awgn函數具體是如何添加噪聲的?
1.1 awgn添加白噪聲原理
SNR就是信號的強度除以噪聲的強度(或者信號功率與噪聲功率之比),所以,首先來講講信號的強度。其實信號的強度指的就是信號的能量,在連續的情形就是對x平方后求積分,而在離散的情形自然是求和代替積分了。
那么如何添加確定值的信噪比噪聲呢?那么根據信噪比公式來推導:
信噪比確定,即SNR是已知的。由于無噪聲信號signal是已知的,所以它的信號功率是已知的。
所以可以求得noisePower
然后根據已知的signal構造相應的噪聲noise
先生成一個與signal相同長度的隨機信號。
noise0=randn(size(signal));
noise1=noise0-mean(noise0);%減去均值
將noise1的按比例進行變換
根據方差和標準差公式,可以知道std(noise0)就是noise0的標準差,這個很好求取。noisePower是noise的噪聲強度,根據上面知道,noise是有noise1按比例變換來的。由于noise1是由noise0減去均值獲得。因此,noise1的功率就是noise0的方差。即噪聲強度對應的是方差,屬于同一個概念。事實上,一個數組減去均值后,其方差和標準差與該數組減去2個均值或者多個常數的方差和標準差相同。
即std(noise0-mean(noise0))=std(noise0-2*mean(noise0))
所以噪聲強度noisePower對應的是noise未減去均值后的方差,因此noise1未減去均值的原始噪聲為noise0.
所以
總結
以上是生活随笔為你收集整理的noisegen matlab,awgn白噪声添加原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git使用某一个分支完全覆盖另一个分支
- 下一篇: python 开发APP教程