新增高斯白雜訊

2022-08-19 01:51:14 字數 2643 閱讀 2131

matlab中雜訊功率、雜訊方差關係

以matlab中awgn函式為例說明:

在matlab中無論是wgn還是awgn函式,實質都是由randn函式產生的雜訊。即:wgn函式中呼叫了randn函式,而awgn函式中呼叫了wgn函式。

根據awgn的實現**可以知道」向已知訊號新增某個訊雜比(snr)的高斯白雜訊「,即:awgn(x,snr,』measured』,'linear』),命令的作用是對原訊號x新增訊雜比(比值)為snr的雜訊,在新增之前先估計訊號x的強度。

這裡涉及三個問題:在awgn這個函式中,snr是如何計算的?什麼是訊號的強度?awgn函式具體是如何新增雜訊的?

事實上,前兩個問題是相關的,因為根據定義,snr就是訊號的強度除以雜訊的強度(或者訊號功率與雜訊功率之比),所以,首先來講講訊號的強度。其實訊號的強度指的就是訊號的能量,在連續的情形就是對x平方後求積分,而在離散的情形自然是求和代替積分了。在matlab中也是這樣實現的,只不過多了乙個規範化步驟罷了:

sigpower= sum(abs(sig(: )).^2)/length(sig(: ))

這就是訊號的強度,這裡sig(: )為訊號。

至此,snr的具體實現也不用多說了(注:由於採用的是比值而非db,所以與下面「計算訊雜比」所使用的方式不同,即沒有求對數步驟)。

最後說說awgn函式具體是如何新增雜訊的。事實上也很簡單,在求出x的強度後,結合指定的訊雜比,就可以求出需要新增的雜訊的強度noisepower=sigpower/snr。由於使用的是高斯白雜訊即randn函式,而randn的結果是乙個強度為1的隨機序列(自己試試sum(randn(1000,1).^2)/1000就知道了,注意訊號的長度不能太小)。於是,所要新增的雜訊訊號顯然就是:                    

sqrt(noisepower)*randn(n,1)

其中n為訊號長度。 

自然要求的白雜訊的方差也可以求出來了!

更新程式如下:

function snr=snr(i,in)

% 計算訊號雜訊比函式

% i :original signal,原始訊號

% in:noisy signal(ie. original signal +noise signal),加雜訊後的訊號

% snr=10*log10(sigma2(i2)/sigma2(i2-i1))

[row,col,nchannel]=size(i);

snr=0;

if nchannel==1%gray image

ps=sum(sum((i-mean(mean(i))).^2));%signalpower

pn=sum(sum((i-in).^2));%noise power

snr=10*log10(ps/pn);

elseif nchannel==3%color image

for i=1:3

ps=sum(sum((i(:,:,i)-mean(mean(i(:,:,i)))).^2));%signalpower

pn=sum(sum((i(:,:,i)-in(:,:,i)).^2));%noisepower

snr=snr+10*log10(ps/pn);

endsnr=snr/3;

end乙個例子:

x = sqrt(2)*sin(0:pi/1000000:6*pi);               %產生正弦訊號

y = awgn(x,10,'measured');                          %加入訊雜比為10db的雜訊,加入前預估訊號的功率(強度)

sigpower = sum(abs(x).^2)/length(x)           %求出訊號功率

noisepower=sum(abs(y-x).^2)/length(y-x)  %求出雜訊功率

snr=10*log10(sigpower/noisepower)          %由訊雜比定義求出訊雜比,單位為db

關於wgn

wgn(m,n,p)產生功率為p dbw的m*n的高斯白雜訊矩陣,其中p是以dbw為單位的輸出強度。 

若要產生乙個均值0,方差為0.0965 的高斯白雜訊,不可直接用wgn(n,1,0.0965)產生,而應該如下:

1. n=1000;

x=sqrt(0.0965)*randn(n,1);

px=(x.'*x)/n   % 驗證,這裡px的求法與上面noisepower=sum(abs(y-x).^2)/length(y-x)的求法是一致的

2. n=1000;

y=wgn(n,1,10*log10(0.0965));

py=(y.'*y)/n   % 驗證

一點說明,對高斯白雜訊,其方差和功率(單位為w)是一樣的。因此,對方差,要做的只是將w變換成dbw,即dbw=10log(w)。

訊雜比,英文名稱叫做snr或s/n(signal noise ratio),是指系統中訊號與雜訊的比例。訊號指的是來自裝置外部需要通過這台裝置進行處理的電子訊號,雜訊是指經過該裝置後產生的原訊號中並不存在的無規則的額外訊號(或資訊),並且該種訊號並不隨原訊號的變化而變化。

訊雜比的計量單位是db,其計算方法是10log(ps/pn),其中ps和pn分別代表訊號和雜訊的有效功率,也可以換算成電壓幅值的比率關係:20log(vs/vn),vs和vn分別代表訊號和雜訊電壓的「有效值」。訊雜比應該越高越好。

matlab新增高斯雜訊

高斯雜訊即呈正態分佈的干擾雜訊,用作增加光譜的擾動或影象的干擾。主要對光譜加噪進行分析。其實matlab本身就有比較成熟的加噪函式imnoise,y1 imnoise y,gaussian m,v y為原始光譜,gaussian為雜訊型別為高斯,m為擾動均值,v為方差。方差0.01為強雜訊,0.00...

一維訊號新增高斯白雜訊程式(python)

高斯雜訊 概率密度分布符合高斯分布。高斯白雜訊 它的幅度分布服從高斯分布,而它的功率譜密度又是均勻分布的 即使是一維的高斯白雜訊,其幅度也不會服從高斯分布,而應該服從瑞利分布。二維不相關的復高斯白雜訊包絡服從指數分布 x2分布的自由度為2的特例 n個不相關的復高斯白雜訊序列疊加後的復訊號包絡服從自由...

高斯白雜訊

本文科普一下高斯白雜訊 white gaussian noise,wgn 白雜訊,如同白光一樣,是所有顏色的光疊加而成,不同顏色的光本質區別是的它們的頻率各不相同 如紅色光波長長而頻率低,相應的,紫色光波長短而頻率高 白雜訊在功率譜上 若以頻率為橫軸,訊號幅度的平方為功率 趨近為常值,即雜訊頻率豐富...