DSP实验报告.docx
《DSP实验报告.docx》由会员分享,可在线阅读,更多相关《DSP实验报告.docx(19页珍藏版)》请在冰豆网上搜索。
![DSP实验报告.docx](https://file1.bdocx.com/fileroot1/2023-1/24/1b681205-c83a-4e1f-805b-c4aa8965d73a/1b681205-c83a-4e1f-805b-c4aa8965d73a1.gif)
DSP实验报告
DSP综合实验报告
实验目的:
1.学会对语音信号的采集处理方法。
2.掌握用MATLAB对采样信号进行频谱分析基本原理。
3.学会用MATLAB设计FIR和IIR滤波器的基本方法:
即双线性设计IIR数字滤波器法和窗函数法设计FIR数字滤波器法。
实验要求:
先采集一单声道音频信号(.wav)并用WAVREAD文件采样读取,并对其进行频谱分析。
分别用窗函数法和双线性变换法设计低通、高通、带通三种FIR滤波器和IIR滤波器。
用M文件使信号通过滤波器并对输出信号进行时域和频域分析。
编程原理:
(1)设计FIR滤波器:
先把期望数字滤波器的指标通过预畸变转化成模拟滤波器的指标,再用MATLAB文件得到模拟滤波器的传输函数,再用双线性变换法得到数字滤波器的传输函数。
(2)设计IIR滤波器:
先通过数字滤波器指标得到窗函数的阶数和系数,再得到数字滤波器的传输函数。
程序及结果图形:
1.巴特沃兹---双线性变换法----设计低通IIRDF:
(1)程序:
[x,fs,bits]=wavread('G:
song.wav');%读取并采样处理音频信号
disp(fs);
disp(bits);
N=length(x);
t=0:
N-1;
subplot(2,1,1)
plot(t,x);%x的时域波形
sound(x,11025);
k=0:
N-1;
subplot(2,1,2)
X=fft(x);
plot(k,abs(X));%X的频谱分析
Fs=input('fs=');%输入抽样频率
%双线性设计低通DF
fp=2000;fs=3200;
WpLd=fp*2*pi/Fs;WsLd=fs*2*pi/Fs;
RpLd=1;RsLd=100;
Wap=2*Fs*tan(WpLd/2);
Was=2*Fs*tan(WsLd/2);%频率预畸变:
低通DF指标变成低通AF指标
[NL,WnL]=buttord(Wap,Was,RpLd,RsLd,'s');%由AF指标得到AF阶数和三DB截止频率
disp(NL);
[ZL,RL,KL]=buttap(NL);%由阶数得到零极点
[BapL,AapL]=zp2tf(ZL,RL,KL);%由零极点得到分子分母
[bL,aL]=lp2lp(BapL,AapL,Wap);%由低通到低通的变换
[bzL,azL]=bilinear(bL,aL,Fs);%用双线性把低通AF分子分母变成低通DF分子分母
[HL,WL]=freqz(bzL,azL);%求DF的频响
figure
(1)
plot(WL/pi,20*log10(abs(HL)))
y=filter(bzL,azL,x);%使x通过滤波器滤波输出为y
figure(3);
plot(t,y);%分析y的时域波形
figure(4);
subplot(4,1,1)
plot(t,x);
subplot(4,1,2)
plot(k,abs(X));%X的频谱分析
subplot(4,1,3)
plot(t,y);
subplot(4,1,4)
Y=fft(y);%对y进行时域分析
plot(k,abs(Y));%对Y进行频谱分析
sound(y,11025);
(2)结果图形:
原信号的时域和频域分析
低通滤波器的特性
经过滤波器输出信号的时域和频域分析
2、巴特沃兹--双线性变换法---设计高通IIRDF:
(1)程序:
[x,fs,bits]=wavread('G:
song.wav');
disp(fs);
disp(bits);
N=length(x);
t=0:
N-1;
subplot(2,1,1)
plot(t,x);
sound(x,11025);
k=0:
N-1;
subplot(2,1,2)
X=fft(x);
plot(k,abs(X));
%双线性设计高通DF
Fs=input('fs=');
fp=3000;fs=2000;
Wphd=fp*2*pi/Fs;Wshd=fs*2*pi/Fs;
RpLd=1;RsLd=100;
Wap=2*Fs*tan(Wphd/2);
Was=2*Fs*tan(Wshd/2);
[NL,WnL]=buttord(Wap,Was,RpLd,RsLd,'s');
disp(NL);
[Zh,Rh,Kh]=buttap(NL);
[Baph,Aaph]=zp2tf(Zh,Rh,Kh);
[bh,ah]=lp2hp(Baph,Aaph,Wap);
[bzh,azh]=bilinear(bh,ah,Fs);
[HL,WL]=freqz(bzh,azh);
figure
(2)
plot(WL/pi,20*log10(abs(HL)));
y=filter(bzh,azh,x);
figure(3);
plot(t,y);
figure(4);
subplot(4,1,1)
plot(t,x);
subplot(4,1,2)
plot(k,abs(X));
subplot(4,1,3)
plot(t,y);
subplot(4,1,4)
Y=fft(y);
plot(k,abs(Y));
sound(y,11025);
(3)结果图形:
3、巴特沃兹---双线性变换法---设计带通IIRDF:
(1)程序:
[x,fs,bits]=wavread('G:
song.wav');
disp(fs);
disp(bits);
N=length(x);
t=0:
N-1;
subplot(2,1,1)
plot(t,x);
sound(x,11025);
k=0:
N-1;
subplot(2,1,2)
X=fft(x);
plot(k,abs(X));
%双线性设计带通DF
Fs=input('fs=');
fp=[12003000];fs=[3004000];
Wpbp=fp*2*pi/Fs;Wsbp=fs*2*pi/Fs;
RpLd=1;RsLd=100;%带通DF的期望指标
Wap=2*Fs*tan(Wpbp/2);
Was=2*Fs*tan(Wsbp/2);%预畸变:
DF频率到AF频率的转换
[Nbp,Wnbp]=buttord(Wap,Was,RpLd,RsLd,'s');%用M文件BUTTORD由带通AF指标得到阶数
disp(Nbp);
[Zbp,Rbp,Kbp]=buttap(Nbp);%由阶数得到零极点及系数
[Bapbp,Aapbp]=zp2tf(Zbp,Rbp,Kbp);%由零极点得到低通AF分子分母
bw=Wap
(2)-Wap
(1);%通带带宽
w0=sqrt(Wap
(1)*Wap
(2));%?
[bp,ap]=lp2bp(Bapbp,Aapbp,w0,bw);%由低通AF分子分母得到带通AF分子分母
[bzp,azp]=bilinear(bp,ap,Fs);%经过双线性变换把带通AF分子分母变成带通DF分子分母
[Hp,Wp]=freqz(bzp,azp);%求带通DF的频率响应
figure
(2)
plot(Wp/pi,20*log10(abs(Hp)));
y=filter(bzp,azp,x);
figure(3);
plot(t,y);
figure(4);
subplot(4,1,1)
plot(t,x);
subplot(4,1,2)
plot(k,abs(X));
subplot(4,1,3)
plot(t,y);
subplot(4,1,4)
Y=fft(y);
plot(k,abs(Y));
sound(y,11025);
(3)结果图形:
4、凯泽窗---设计低通FIRDF:
(1)程序:
[x,fs,bits]=wavread('G:
song.wav');
disp(fs);
disp(bits);
N=length(x);
t=0:
N-1;
subplot(2,1,1)
plot(t,x);
sound(x,11025);
k=0:
N-1;
subplot(2,1,2)
X=fft(x);
plot(k,abs(X));
%设计低通DF
Fs=input('fs=');
wpl=2*1000/fs;
wsl=2*1200/fs;
as=100;
ap=1;%期望的低通DF指标
p=0.1087487;
s=0.00001;
fptsl=[wplwsl];
mag=[10];
dev=[ps];
[N,Wn,beta,ftype]=kaiserord(fptsl,mag,dev)%参数得到凯泽窗的阶数截止频率等
kw=kaiser(N+1,beta);%阶数得到凯泽窗的系数
b=fir1(N,Wn,kw);%由凯泽窗的阶数和系数得到传输函数的系数
[h,omega]=freqz(b,1,512);%分析传输函数的频谱
figure
(1);
plot(omega/pi,20*log10(abs(h)));
grid;
xlabel('\omega/\pi');ylabel('Gain,dB');
y=fftfilt(b,x);
figure(3);
plot(t,y);
figure(4);
subplot(4,1,1)
plot(t,x);
subplot(4,1,2)
plot(k,abs(X));
subplot(4,1,3)
plot(t,y);
subplot(4,1,4)
Y=fft(y);
plot(k,abs(Y));
sound(y,11025);
(2)结果图形:
5、凯泽窗---设计高通FIRDF:
(1)程序:
[x,fs,bits]=wavread('G:
song.wav');
disp(fs);
disp(bits);
N=length(x);
t=0:
N-1;
subplot(2,1,1)
plot(t,x);
sound(x,11025);
k=0:
N-1;
subplot(2,1,2)
X=fft(x);
plot(k,abs(X));
Fs=input('fs=');
%设计高通DF
wph=2*5000/fs;
wsh=2*4800/fs;
p=0.1087487;
s=0.00001;
fptsh=[wshwph];
mag=[01];
dev=[sp];
[N,Wn,beta,ftype]=kaiserord(fptsh,mag,dev)
kw=kaiser(N+1,beta);%注意凯泽窗长度为N+1
b=fir1(N,Wn,'high',kw);%注意函数参数要加‘HIGH’
[h,omega]=freqz(b,1,512);
figure
(2);
plot(omega/pi,20*log10(abs(h)));
grid;
xlabel('\omega/\pi');ylabel('Gain,dB');
y=fftfilt(b,x);
figure(3);
plot(t,y);
figure(4);
subplot(4,1,1)
plot(t,x);
subplot(4,1,2)
plot(k,abs(X));
subplot(4,1,3)
plot(t,y);
subplot(4,1,4)
Y=fft(y);
plot(k,abs(Y));
sound(y,11025);
(2)结果图形:
6、凯泽窗---设计带通FIRDF:
(1)程序:
[x,fs,bits]=wavread('G:
song.wav');
disp(fs);
disp(bits);
N=length(x);
t=0:
N-1;
subplot(2,1,1)
plot(t,x);
sound(x,11025);
k=0:
N-1;
subplot(2,1,2)
X=fft(x);
plot(k,abs(X));
Fs=input('fs=');
%设计带通DF
wp1=2*1200/fs;
wp2=2*3000/fs;
ws1=2*1000/fs;
ws2=2*3200/fs;
p=0.1087487;
s=0.00001;
fptsh=[wp1wp2];
mag=[10];
dev=[ps];
[N,Wn,beta,ftype]=kaiserord(fptsh,mag,dev)
kw=kaiser(N+1,beta);
b=fir1(N,[0.50.75],kw);
[h,omega]=freqz(b,1,512);
figure
(2);
plot(omega/pi,20*log10(abs(h)));grid;
xlabel('\omega/\pi');ylabel('Gain,dB');
y=fftfilt(b,x);
figure(3);
plot(t,y);
figure(4);
subplot(4,1,1)
plot(t,x);
subplot(4,1,2)
plot(k,abs(X));
subplot(4,1,3)
plot(t,y);
subplot(4,1,4)
Y=fft(y);
plot(k,abs(Y));
sound(y,11025);
(2)结果图形:
结果分析和结论总结:
(1)原始音频信号经过滤波器后输出的信号基本和原信号相似,不过有的已失真,实验过程中有的滤波器输出没有信号,这说明滤波器设计的有问题。
信号经过滤波器后应该受到滤波器的滤波作用,把高频或低频或高频和低频分量滤掉,出来的信号应该是带限信号,频带在一定范围内的,从理论上讲信号应该比较好,音质比较。
但实际中并不是像理论中的那样,而是有些失真。
我们可以得出结论:
如果要对一信号进行加工处理的话,滤波器是必不可少的,它可以滤除多余的杂波分量,使输出的信号比较清晰。
针对不同的信号,我们可以选择不同类型的滤波器,设置不同的参数,最终使对信号的滤波作用达到最佳。
(2)设计滤波器进行编程时对一些基本M文件不熟悉其用法,不熟悉其参数含义。
经查询资料才可慢慢看懂并应用。
设计IIR滤波器时用BUTTER、CHEBY、ELLIP及双线性变换法设计低通、高通、带通数字滤波器时对其之间变换关系不熟悉。
需反复查阅课本实例才能稍加改换。
设计FIR滤波器时用各种窗函数直接设计低通、高通、带通数字滤波器时对窗函数的参数的求法及关系不懂,不知其内含是什么,不过看着资料能应用。
对带通滤波器的参数的变换关系不是很懂,以及低通、高通、带通之间的变换关系不熟悉。
经查阅资料稍微有些懂之。
后面窗函数法设计时使信号经过滤波器时用的M文件的参数不是很懂,后面的输出信号图形可能有些不对。