實驗5 頻譜分析與濾波
5.1 試驗目的
熟悉訊號的頻譜分析與訊號濾波。
5.2實驗內容
5.2.1 訊號的頻譜分析
建立一個含20Hz和100Hz幅值為2的正弦訊號(sin),然後疊加一個幅值為1的隨機訊號,利用Matlab分析其頻譜。
5.2.2 濾波
接上題,濾除噪聲訊號和100Hz正弦訊號。(啟動Demo,在位址列輸入Signal Processing Demo: filtdem)
5.3實驗提示
5.3.1 FFT譜分析
FFT通常可用於含噪聲的時域訊號的頻率組成。
fs=1000; %取樣頻率為1000 Hz
t = 0:1/fs:.25; %設定時間軸,t=0 到.25,時間步長為1毫秒
x = sin(2*pi*50*t) + sin(2*pi*120*t); %建立訊號,含50 Hz 、120 Hz的正弦訊號
y = x + 2*randn(size(t)); %加入隨機訊號,幅值為2的噪聲訊號。
plot(y(1:50)); %很難分辨訊號的頻率組成
Y = fft(y,256); %256點快速傅立葉變換FFT
Pyy = Y.*conj(Y)/256; %複共軛(CONJ)計算功率譜密度
f = fs/256*(0:127); %為前128資料點(後128點與支對稱)建立頻率軸。
figure(2); %開第二個圖形窗,並在該視窗畫出第二個圖形
plot(f,Pyy(1:128)); %注意到在50 Hz和120 Hz有兩個波峰
xlabel(‘Frequency (Hz)’)
圖 噪聲訊號
圖2 功率譜
5.3.2 濾波
某目標訊號是由5、15、30Hz正弦波混合而成的混合訊號,現需要設計一個濾波器濾掉5、30Hz兩種頻率。
分析,顯然我們應該設計一個帶通濾波器,通帶頻率落在15Hz附近。
Fs = 100; %取樣點數
t = (1:100)/Fs; %取樣頻率
s1 = sin(2*pi*t*5); s2=sin(2*pi*t*15); s3=sin(2*pi*t*30); %5、15、30赫茲
s = s1+s2+s3; %訊號疊加
plot(t,s); %顯示訊號
[b,a] = ellip(4,0.1,40,[10 20]*2/Fs); %設定濾波器
%下面四行可以不操作
[H,w] = freqz(b,a,512); %數字濾波器頻響
plot(w*Fs/(2*pi),abs(H)); %顯示頻率響應
xlabel(‘Frequency (Hz)’); ylabel(‘Mag. of frequency response’); %設定標籤
grid; %顯示網格
%上面四行可以不操作
sf = filter(b,a,s); %數字濾波
plot(t,sf); %顯示濾波結果
axis([0 1 -1 1]); %設定軸刻度
查詢幫助看看ellip的引數,注意通帶的設定以及取樣頻率、取樣點數的選取。
函式ellip的簡要說明,ellip(4,0.1,40,[10 20]*2/Fs),其中的4是濾波器的階數,這裡為4階濾波器,通帶衰減為0.1 dB,阻帶衰減為40 dB,[10 20]為通頻帶10~20Hz,注意最後一項的值必須大於0小於等於1。
Example 1
For data sampled at 1000?Hz, design a sixth-order lowpass
elliptic filter with a passband edge frequency of 300?Hz,
which corresponds to a normalized value of 0.6, 3?dB of ripple
in the passband, and 50?dB of attenuation in the stopband:[b,a] = ellip(6,3,50,300/500);
The filter’s frequency response isfreqz(b,a,512,1000)
title(‘n=6 Lowpass Elliptic Filter’)
Example 2
Design a 20th-order bandpass elliptic filter with a passband from 100
to 200?Hz and plot its impulse response:n = 10; Rp = 0.5; Rs = 20;
Wp = [100 200]/500;
[b,a] = ellip(n,Rp,Rs,Wp);
[y,t] = impz(b,a,101); stem(t,y)
title(‘Impulse Response of n=10 Elliptic Filter’)
提示:
試一下調節ellip函式中的各引數,看看各種引數對結果的影響,調節一下通頻帶,分別取出5Hz或30Hz的訊號分量。