如何用matlab編寫噪聲調頻干擾信acaue2016-02-20

以高斯噪聲為例:若有用訊號s(n)的最大幅度am,要求得到的信噪比為p,則p=10log10[(am^2)/b^2],用這個公式反推出高斯噪聲的方差b^2,若s(n)單通道實訊號,則Matlab程式就是x=s+b*randn(size(s));若s(n)是正交雙通道訊號,則Matlab程式就是x=s+b/sqrt(2)*randn(size(s))。

如果s(n)是一個N行、2列的覆信號,前後兩列各表示實部和虛部,則b/sqrt(2)*randn(size(s))產生的也是N×2的高斯分佈噪聲,實部和虛部的方差均為b/sqrt(2)。實部和虛部分別產生也可以,但不能用b*randn(size(s))。第一,如果這樣產生噪聲,那麼最終訊號的信噪比應該用p=10log10[(am^2)/(2*b^2)];第二,不能用size(s),應該用size(c),c為s(n)的實(虛)部列向量的長度。

Matlab中計算信噪比方式:

%===========================Happy===================================%

function snr=SNR(I,In)

% 計算訊號噪聲比函式

% by Qulei

% 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));%signal power

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));%signal power

Pn=sum(sum((I(:,:,i)-In(:,:,i))。^2));%noise power

snr=snr+10*log10(Ps/Pn);

end

snr=snr/3;

end

%===================================================================%

轉:

符號的平均功率 每位元訊號能量/符號週期

SNR信噪比 = ————————————- = ————————————————————- =

噪聲的平均功率 噪聲單邊功率普密度*符號頻寬

Eb/T 在限帶情況下 T*B=1 Eb

= —————— ================== ————-

N0*B N0

實際系統中噪聲的單邊功率普密度N0受溫度和常數K決定的,在一定條件下為固定值;信噪比與訊號能量的強弱成正比。在模擬中,為了簡化模型,通常採用固定輸入訊號幅度,改變N0來起到SNR的變化。

其中的Eb是在相干接收條件下解調後訊號能量,而系統接收的信噪比通常是加在接收輸入端,也就是解調前。為了令Eb在解調前後的能量統一,在傳送端必須採用能量的歸一化。

歸一化方法:

_ x(n)

x(n) =—————————————— n屬於(1,N) N為1bit內取樣點數

sqrt(Sum(x(n)^2))