通信原理大作業中的一部分,使用matlab仿真:
產生信道高斯白噪聲,設計信道帶通濾波器對高斯白噪聲進行濾波,得到窄帶高斯噪聲,對信道帶通濾波器的輸入輸出的噪聲的時域、頻域特性進行統計和分析,畫出其時域和頻域的圖形,
高斯白噪聲產生
首先確定采樣頻率和總時長,以此確定總采樣點數和時間向量:
fs=1000;%采樣頻率hz
T_N=1;%總時間s
t=1/fs:1/fs:T_N;%時間向量
L=T_N*fs;%樣本數量
然后用wgn產生高斯噪聲:
z=wgn(L,1,power);
當然,也可以用原始的產生正態亂數的方法:
z=sigma.*randn(L,1)
注意power的單位是dbW,轉換公式如下:
p
(
d
B
w
)
=
10
log
?
P
(
W
)
p (dBw) = 10\log P (W)
p(dBw)=10logP(W)
如果功率P為1w,折算為dBw后為0dBw,
另外高斯白噪聲的方差是噪聲功率:
P
=
σ
2
P=\sigma^2
P=σ2
下面到了關鍵的環節,快速(離散)傅里葉變換fft:
fft_z=fft(z);
對噪聲z從時域轉換為頻域,注意到如果要獲得單邊頻譜,還需要做以下操作:
P = abs(fft_z/L);%取幅頻特性,除以L
P = P(1:L/2+1);%截取前半段
P(2:end-1)=2*P(2:end-1);%單側頻譜非直流分量記得乘以2
f = fs*(0:(L/2))/L;%頻率,最多到一半(奈奎斯特采樣定理)
fft的結果是關于采樣頻率的一半對稱的,幅度需要除以采樣點個數L,從雙邊譜到單邊譜需要對非直流分量乘以2,注意到由于奈奎斯特采樣定理,原信號的最大頻率不會超過采樣頻率的一半,假如我們設定采樣頻率為1000Hz,那么頻域的最大頻率也就是500Hz,
這些操作都是從mathwork官網上找到的,參考鏈接,不得不說matlab的幫助檔案尤其是里面的示例真香!
高斯白噪聲的時域和頻域圖如下:

白噪聲白噪聲,就是頻譜上也是到處都是高斯分布,
巴特沃斯濾波器
用butter函式獲得8階巴特沃斯濾波器系數,帶通范圍100-200Hz
[b,a]=butter(8,[100/(fs/2),200/(fs/2) ]);
第一個引數是濾波器階數,第二個引數是歸一化的帶通頻率,注意到fs/2是信號的最大頻率,
用下面這個函式可以畫出濾波器特性曲線:
freqs(b,a)

(我其實看不懂)
濾波
用flutter函式快樂的濾波~
lvbo_z=filter(b,a,z);
應該是對原時域信號z濾波,我原先這里對fft后的信號濾波了,結果怎么都不對,debug了好久,
濾波后的信號lvbo_z也是個時域信號,用上述相同的辦法fft后畫單邊頻譜,可以得到窄帶高斯噪聲:

可以明顯發現濾波后的信號時域上看起來更奇怪了,頻域上看,是把100-200Hz頻率分量保留,其余頻率分量濾除了,
做個對比,帶通范圍調到300-400Hz:
頻率更高了,波形看起來更密了,
全部代碼:
fs=1000;%采樣頻率hz
T_N=1;%總時間s
t=1/fs:1/fs:T_N;%時間向量
L=T_N*fs;%樣本數量
power=3;%噪聲功率,單位為dbw
z=wgn(L,1,power);
subplot(2,1,1)
plot(t,z)
xlabel("時間/s")
ylabel("幅度/v")
title("高斯白噪聲(時域)")
fft_z=fft(z);%快速傅里葉變換之后的噪聲
P = abs(fft_z/L);%取幅頻特性,除以L
P = P(1:L/2+1);%截取前半段
P(2:end-1)=2*P(2:end-1);%單側頻譜非直流分量記得乘以2
f = fs*(0:(L/2))/L;%頻率,最多到一半(奈奎斯特采樣定理)
subplot(2,1,2)
plot(f,P)
xlabel("頻率/Hz")
ylabel("幅度/v")
title("高斯白噪聲(頻域)")
[b,a]=butter(8,[300/(fs/2),400/(fs/2) ]);%獲得8階巴特沃斯濾波器系數,100-200Hz
figure(2)
freqs(b,a)%畫濾波器特性曲線
lvbo_z=filter(b,a,z);%濾波
figure(3)
subplot(2,1,1)
plot((lvbo_z))
xlabel("時間/Hz")
ylabel("幅度/v")
title("窄帶高斯噪聲(時域)")
fft_lvbo_z=fft(lvbo_z);%傅里葉變換
P = abs(fft_lvbo_z/L);%取幅頻特性,除以L
P = P(1:L/2+1);%截取前半段
P(2:end-1)=2*P(2:end-1);%單側頻譜非直流分量記得乘以2
subplot(2,1,2)
plot(f,P)
xlabel("頻率/Hz")
ylabel("幅度/v")
title("窄帶高斯噪聲(頻域)")
書上的知識,尤其是技術上的,網路上還真是難找啊,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/229321.html
標籤:其他
