数字信号实验报告

  • 格式:docx
  • 大小:185.70 KB
  • 文档页数:9

数字信号处理导论实验报告姓名:张伦裕学号:200905090205实验一信号、系统及系统响应当系统的输入输出差分方程为:Y(n)-0.8y(n-1)-0.5y(n-2)=0.7x(n)+0.3x(n-1)通过MATLAB 编程实现并考虑如下问题:(1)当系统的输入为单位冲激函数时,分别利用filter 函数和impz 函数得到的系统单位冲激响应曲线。

(2)当系统的输入为单位阶跃函数时,分别利用filter 函数和impz 函数得到的系统单位阶跃响应曲线。

(3)对于不同的输入,系统的输出有什么变化,试讨论之。

一、实验原理系统的零状态响应就是在系统初始状态为零的条件下微分方程的解。

y=filter(b,a,f)其中b,a分别为系统差分方程左右端系数向量,f为数输入向量。

impz函数可直接求出离散系统的单位冲激响应,为:impz(b,a)。

conv函数可用于计算离散序列的线性卷积。

为:y=conv(x,h)。

可用impz函数和conv函数计算对任意输入的离散系统的响应,即由impz求出单位冲激响应,再用单位冲激应与输入序列卷积。

二、程序n=0:20;A=[1,-0.8,-0.5];B=[0.7,0.3];y1=filter(B,A,u1);[y2]=impz(B,A,21);Y1=filter(B,A,u2);[h]=impz(B,A,21);Y22=conv(h,u2);Y2=Y22(1:21);subplot(221);stem(n,y1);title('filter function');grid on;subplot(222);stem(n,y2);title('impz function');grid on;subplot(223);stem(n,Y1);title('filter function');grid on;subplot(224);stem(n,Y2);title('impz function');grid on;三、结果及分析:实验二使用FFT作频谱分析编程实现下列问题并讨论所得到的结果。

(1)使用FFT 对MATLAB 中的数据noissin.dat 进行谱分析。

(2)使用FFT 对语音数据noisyspeech.wav 进行谱分析。

一、实验原理(1)离散傅里叶变换(DFT)公式为:X(k)=∑x(n)W^nk;x(n)=∑X(k)W^-nk;其中w=e^(2∏nk/N),N为离散序列的长度。

(2)快速傅里叶变换(FFT)是利用w因子的取值特点,减少DFT的复数乘法的次数。

其中一种是时间抽取基2算法,它将时间按奇偶逐级分开,直到两点的DFT。

MATLAB提供了fft 函数可用于计算FFT,器调用形式为;X=fft(x)或X=fft(x,N),N为2的整数次幂,若x 的长度小于N,则补零,若超过则舍去N后的数据。

(3)函数形式[y,fs,bits]=wavread('Blip',[N1 N2]);用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。

[N1 N2]表示读取从N1点到N2点的值(若只有一个N 的点则表示读取前N点的采样值)。

函数形式s=noissin(n1,n2)用于读取MALAB的噪声信号。

二、程序xx=wavread('noisyspeech.wav'); fs=100;N=128;x=xx(1:N);n=1:N;X=abs(fft(x,N));subplot(221);plot(n,x);xlabel('n');ylabel('x(n)'); grid on;subplot(222);plot(n,X);xlabel('k');ylabel('|X(k)|'); grid on;load noissin;s=noissin(1:20);S=fft(s);subplot(223);plot(abs(s)); xlabel('n');ylabel('|s(n)|'); grid on;subplot(224);plot(abs(S)); xlabel('k');ylabel('|S(k)|'); grid on;三、结果与分析实验三使用双线性Z变换设计IIR滤波器编程实现下列问题并讨论所得到的结果。

(1)使用FFT 对MATLAB 中的数据noissin.dat 进行谱分析。

(2)使用FFT 对语音数据noisyspeech.wav 进行谱分析。

一、实验原理(1)设计滤波器就是要设计一个系统是其能让一定频率的波段通过或滤去,对IIR滤波器,器转移函数是:H(Z)=(∑bz^(-r))/(1+∑az^(-k))。

(2)设计的一般原则:若使滤波器拒绝某个频率,应在单位园上相应的频率处设置一个零点,反之则设置一个极点。

(3)低通数字IIR滤波器设计步骤:给出数字低通滤波器的技术要求→映射为模拟低通的技术要求→归一化为模拟低通滤波器的技术要求→设计出G(P)→G(S)→映射到数字滤波器的转移函数G(Z)。

(3)双线性Z变换,即S平面到Z平面的映射关系:S=2(Z-1)/Ts(Z+1)。

二、程序fp=100;fs=300;Fs=1000;rp=3;rs=20;wp=2*pi*fp/Fs;ws=2*pi*fs/Fs;Fs=Fs/Fs;wap=tan(wp/2);was=tan(ws/2);[n,wn]=buttord(wap,was,rp,rs,'s');[z,p,k]=buttap(n);[bp,ap]=zp2tf(z,p,k);[bs,as]=lp2lp(bp,ap,wap);[bz,az]=bilinear(bs,as,Fs/2);[h,w]=freqz(bz,az,256,Fs*1000);plot(w,abs(h));xlabel('w');ylabel('|h(w)|');grid on;bpapbsasbzaz三,结果及分析bp =0 0 1ap =1.0000 1.4142 1.0000bs =0.1056as =1.0000 0.4595 0.1056bz =0.0675 0.1349 0.0675az =1.0000 -1.1430 0.4128实验四使用窗函数发设计FIR滤波器题目:根据下列指标,设计一个FIR数字低通滤波器:ω=2.0∏,ω=4.0∏Ap=0.25dB,As=50dB。

(1)分别考查矩形窗、三角窗、Hanning窗、Hamming窗并分析这些不同的窗函数对滤波器的幅度响应有什么影响。

(2)选择一个合适的窗函数,确定单位冲激响应,绘出所设计的滤波器的幅度响应。

一、实验原理(1)窗函数法:将理想低通数字滤波器Hd(z)的单位抽样响应hd(n)截短并位移,可得到对理想滤波器的近似的转移函数H(z)。

此过程即为在hd(n)上施加矩形窗口。

(2)FIR DF设计的窗含函数法仅能给出通带截止频率wp,其他几个参数是靠h(n)的长度及所使用的窗含数的性能来决定的。

常用的窗函数有:矩形窗、三角窗、汉宁窗、汉明窗。

MATLAB窗函数法设计FIR数字低通滤波器用函数firl其调用形式为:b=firl(N,Wn)。

式中N为滤波器的阶次,Wn是通带截止频率,b是设计好的滤波器系数h(n)。

(3)freqz函数,用来求系统的频率响应,其调用形式为:[H,w]=freqz(b,a,N,’whole’,Fs)。

二、程序N=128;Wp=0.2*pi;Ws=0.4*pi;Wc=(Ws+Wp)/2;b=fir1(N,Wc,hamming(N+1))[h,w]=freqz(b,1,N,1);plot(w,abs(h));xlabel('w');ylabel('|h(w)|');grid on;三、结果及分析自编FFT程序:(用MATLAB实现)function Xk= ffts(xn)N=length(xn);M=log2(N);n1=fliplr(dec2bin(0:N-1));n2=bin2dec(n1);Xk=ones(1,N);for h=1:NXk(h)=xn(n2(h)+1);endfor i=1:Ms=2^i;g=N/s;b=s/2;for k=0:g-1;for m=0:b-1;O=-2*pi*m*g/N;w=cos(O)+1i*sin(O);n=k*s+m;y=w*Xk(n+b+1);G=Xk(n+1);H=Xk(n+1);Xk(n+1)=G+y;Xk(n+b+1)=H-y;endendend例:xn=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15];y1=fft(xn);y2=ffts(xn);subplot(121);stem(abs(y1));subplot(122);stem(abs(y2));结果。