資源簡介
綜合運用數字信號處理的理論知識進行頻譜分析和濾波器設計,通過理論推導得出相應結論,再利用MATLAB作為編程工具進行計算機實現。

代碼片段和文件信息
clear;
clc;
%
f_pn=170;???????%正弦波信號頻率
f_sn=630;???????%三角波信號頻率
l=32768;?????????%信號的長度
fs=22050;???????%采樣頻率
%生成信號
figure(1);
t=(0:l-1)/fs;
pn=sin(2*pi*f_pn*t);????????????%正弦波信號
subplot(311);
plot(1000*t(1:l/4)pn(1:l/4));?
title(‘正弦波信號時域波形‘);
xlabel(‘時間(ms)‘);
ylabel(‘幅度‘);
sn=sawtooth(2*pi*f_sn*t0.5);???%三角波信號
subplot(312);
plot(1000*t(1:l/4)sn(1:l/4));?
title(‘三角波信號時域波形‘);
xlabel(‘時間(ms)‘);
ylabel(‘幅度‘);
dn=randn(size(t));??????????????%隨機噪聲信號
subplot(313);
plot(1000*t(1:l/4)dn(1:l/4));?
title(‘隨機噪聲信號時域波形‘);
xlabel(‘時間(ms)‘);
ylabel(‘幅度‘);
%信號合成分析
figure(2);
xn=pn+sn+dn;%信號合成
subplot(211);
plot(1000*t(1:l/4)xn(1:l/4));?
title(‘合成信號時域波形‘);
xlabel(‘時間(ms)‘);
ylabel(‘幅度‘);
grid?on;
subplot(212);
%?信號的頻譜圖
NFFT?=?2^nextpow2(l);
Y?=?fft(xnNFFT)/l;
f?=?fs/2*linspace(01NFFT/2);
YM=2*abs(Y(1:NFFT/2));
plot(f(1:NFFT/16)YM(1:NFFT/16));
title(‘信號頻譜‘);
xlabel(‘頻率Hz)‘);
ylabel(‘幅度|Y(f)|‘);
grid?on;
%?濾出正弦波信號
figure(3);
%fir帶通濾波器:
Wp1=2*(f_pn-50)/fs;
Wp2=2*(f_pn+50)/fs;
Ws1=2*(f_pn-100)/fs;
Ws2=2*(f_pn+100)/fs;
Ap=1;
As=100;
W1=(Wp1+Ws1)/2;
W2=(Wp2+Ws2)/2;
wdth=min((Wp1-Ws1)(Ws2-Wp2));
N=ceil(11*pi/wdth)+1;
[ba]=?fir1(N[W1?W2]);
[Hw]=freqz(bafs);
subplot(311);
plot(w*fs/(2*pi)abs(H));
axis([0?1400?-0.05?1.05]);
title(‘fir帶通濾波器幅頻響應‘);
xlabel(‘頻率?(Hz)‘‘FontSize‘?8.0)
ylabel(‘|H(f)|‘)
grid?on;
s=xn;
%對信號進行濾波
sf0=filter(bas);
subplot(312);
plot(1000*t(1:l/4)sf0(1:l/4));?
title(‘濾波后的時域波形‘);
xlabel(‘時間(ms)‘);
ylabel(‘幅度‘);
grid?on;
subplot(313);
%?信號的頻譜圖
NFFT?=?2^nextpow2(l);
Y?=?fft(sf0NFFT)/l;
f?=?fs/2*linspace(01NFFT/2);
YM=2*abs(Y(1:NFFT/2));
plot(f(1:NFFT/16)YM(1:NFFT/16));
title(‘濾波后的頻譜圖‘);
grid?on;
%?濾出三角波信號
figure(4);
%fir帶通濾波器:
Wp1=2*(f_sn-50)/fs;
Wp2=2*(f_sn+50)/fs;
Ws1=2*(f_sn-100)/fs;
Ws2=2*(f_sn+100)/fs;
Ap=1;
As=100;
W1=(Wp1+Ws1)/2;
W2=(Wp2+Ws2)/2;
wdth=min((Wp1-Ws1)(Ws2-Wp2));
N=ceil(11*pi/wdth)+1;
[ba]=?fir1(N[W1?W2]);
[Hw]=freqz(bafs);
subplot(311);
plot(w*fs/(2*pi)abs(H));
axis([0?1400?-0.05?1.05]);
title(‘fir帶通濾波器幅頻響應‘);
xlabel(‘頻率?(Hz)‘‘FontSize‘?8.0)
ylabel(‘|H(f)|‘)
grid?on;
s=xn;
%對信號進行濾波
sf0=filter(bas);
subplot(312);
plot(1000*t(1:l/4)sf0(1:l/4));?
title(‘濾波后的時域波形‘);
xlabel(‘時間(ms)‘);
ylabel(‘幅度‘);
grid?on;
subplot(313);
%?信號的頻譜圖
NFFT?=?2^nextpow2(l);
Y?=?fft(sf0NFFT)/l;
f?=?fs/2*linspace(01NFFT/2);
YM=2*abs(Y(1:NFFT/2));
plot(f(1:NFFT/16)YM(1:NFFT/16));
title(‘濾波后的頻譜圖‘);
grid?on;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????139776??2013-04-08?10:58??數字信號處理課程設計+FIR數字濾波器.doc
?????文件????????2764??2013-04-08?02:48??源代碼.m
評論
共有 條評論