首页数学计算数学MATLAB实验教程 04 第4章 MATLAB在数字信号处理中的应用.pptx

04 第4章 MATLAB在数字信号处理中的应用.pptx

页数:125页文件大小:2.82 MB来源: MATLAB实验教程ppt课件

本课件配合数字信号处理课程,用12个实例演示脉冲响应不变法与双线性变换法设计IIR带通、带阻滤波器,FIR滤波器设计、模拟滤波器原型与巴特沃斯滤波器,双音多频检测,以及自适应滤波LMS、维纳滤波与卡尔曼滤波。

第4章MATLAB在数字信号处理中的应用章首导论页,MATLAB中的信号处理工具箱提供了很多数字信号处理中需要用到的函数及解决方法
第4章MATLAB在数字信号处理中的应用讲解页,知识架构
IIR带通滤波器设计实验目的页,掌握脉冲响应不变法设计IIR数字滤波器的具体设计方法
查看本课件的文字版(共 125 页,供检索与复制)

第1页:第4章MATLAB在数字信号处理中的应用

MATLAB中的信号处理工具箱提供了很多数字信号处理中需要用到的函数及解决方法。在数字信号处理中所学习到的问题,诸如滤波器的设计、自适应滤波,维纳滤波、卡尔曼滤波等理论都可以通过MATLAB仿真得到实现和验证。本章提供了12个MATLAB在数字信号处理课程学习中的应用实例,可作为学习数字信号处理课程的参考。

第2页:本章知识架构

知识架构

第3页:IIR带通滤波器设计·实验目的

1.实验目的

  • (1)掌握脉冲响应不变法设计IIR数字滤波器的具体设计方法。
  • (2)熟悉脉冲响应不变法设计低通滤波器的仿真。2.实验原理脉冲响应不变法是从滤波器的脉冲响应出发,使数字滤波器的单位脉冲响应序列h(n)模仿模拟滤波器的冲击响应ha(t),使h(n)正好等于ha(t)的采样值,即:

第4页:IIR带通滤波器设计(续)

T为采样周期。若以Ha(s)及H(z)分别表示ha(t)的拉氏变换及h(n)的Z变换,即:根据采样序列Z变换与模拟信号拉氏变换的关系得:上式表明,采用脉冲响应不变法将模拟滤波器变换为数字滤波器时,它所完成的S平面到Z平面的变换,正是以前讨论的拉氏变换到Z变换的标准变换关系。

第5页:IIR带通滤波器设计(续)

脉冲响应不变法特别适用于用部分分式表达的传递函数,模拟滤波器的传递函数若只有单阶极点,且分母的阶数高于分子阶数,则可表达为部分分式形式:其拉氏反变换为:对ha(t)采样就得到数字滤波器的单位脉冲响应序列:再对h(n)取Z变换,得到数字滤波器的传递函数:

第6页:第二个求和为等比级数之和:要收敛的话

第二个求和为等比级数之和
要收敛的话,必有:比较部分分式形式的Ha(s)和上式H(z)可以看到,把S平面上的极点变换到Z平面上对应的极点,而Ha(s)与H(z)中部分分式所对应的系数不变。如果模拟滤波器是稳定的,则所有极点都在S左半平面那么变换后H(z)的极点也都在单位圆内,因此数字滤波器保持稳定。所以有:

第7页:IIR带通滤波器设计·仿真思路

3.仿真思路在MATLAB中,可以用下列函数辅助设计IIR数字滤波器。

  • (1)利用cheb1ord可以确定低通原型和切比雪夫滤波器的阶数和截止频率。
  • (2)[num,den]=cheby1(N,Wn),[num,den]=cheby2(N,Wn)(切比雪夫1型和2型)可以进行滤波器的设计。
  • (3)利用impinvar可以完成脉冲响应不变法的模拟滤波器到数字滤波器的转换。4.程序代码

第8页:IIR带通滤波器设计·程序代码

clearwp=6*pi*10^3;ws=9*pi*10^3;ap=1,as=15;Fs=30*10^3;wp1=wp/Fs;ws1=ws/Fs;[N,WC]=cheb1ord(wp,ws,ap,as,'s');[b,a]=cheby1(N,ap,WC,‘s’);[bz,az]=impinvar(b,a,Fs);w0=[wp1,ws1];Hx=freqz(bz,az,w0);[H,W]=freqz(bz,az);dbHx=-20*log10(abs(Hx)/max(abs(H)));plot(W,abs(H));xlabel('相对频率');ylabel('幅频');grid

第9页:IIR带通滤波器设计·运行结果与分析

5.运行结果与分析结论
由图4.2可知,切比雪夫Ⅰ型滤波器的振幅特性在通带内是等波纹的,在阻带内是单调的。6.思考题(1)带通滤波器的幅度有什么特点?图4.2中滤波器的下降沿怎么样才能更陡峭?(2)用本节所学的知识设计切比雪夫Ⅱ型滤波器。图4.2:

第10页:IIR带阻滤波器设计·实验目的

1.实验目的

  • (1)熟悉用双线性变换法设计IIR数字滤波器的原理与方法。
  • (2)熟悉带阻数字滤波器设计方法。
  • (3)通过观察对实际心电图信号的滤波作用,获得数字滤波的感性知识。2.实验原理1)用双线性变换法设计IIR数字滤波器数字低通技术指标为:模拟低通的技术指标为:

第11页:查巴特沃斯归一化低通滤波参数表可得

查巴特沃斯归一化低通滤波参数表可得:设计巴特沃斯低通滤波器。阶数N计算如下。数字滤波器系统函数H(z)为:

第12页:IIR带阻滤波器设计·程序代码

A=0.09036B1=1.2686, C1=−0.7051B2=1.0106, C2=−0.3583B3=0.9044, C3=−0.2155可见H(z)是由3个二阶滤波器H1(z)、H2(z)、H3(z)级联组成的,如图4.3所示。图4.3滤波器H(z)的组成图2)带阻IIR数字滤波器实现过程

第13页:按一定规格将数字滤波器的技术指标转

  • (1)按一定规格将数字滤波器的技术指标转为模拟低通滤波器的技术指标。
  • (2)根据转换后的技术指标使用滤波器阶数函数,确定最小阶数N和截止频率Wc。
  • (3)利用最小阶数N产生模拟低通滤波器原型。
  • (4)利用截止频率Wc把模拟低通原型转化为模拟带阻滤波器。
  • (5)利用冲激响应不变法或双线性不变法把模拟滤波器转换成数字滤波器。3.仿真思路
  • (1)用双线性变换法设计一个低通IIR数字滤波器。

第14页:IIR带阻滤波器设计(续)

设计参数为
在通带内频率低于0.2πrad时,最大衰减小于1dB,在阻带内[0.3π,π]频率区间上,最小衰减大于15dB。(2)所设计的滤波器对实际心电图信号采样序列进行仿真滤波处理,观察滤波前后的图形。(3)设计一个带阻IIR数字滤波器,其具体要求是:通带的截止频率wp1=650Hz,wp2=850Hz;阻带的截止频率ws1=700Hz,ws2=800Hz,带通内的最大衰减rp=0.1dB,阻带内的最小衰减为rs=50dB,采样频率为Fs=2000Hz。

第15页:IIR带阻滤波器设计·程序代码

4.程序代码1)心电图信号滤波代码x=[-4,-2,0,-4,-6,-4,-2,-4,-6,-6,...-4,-4,-6,-6,-2, 6,12, 8, 0,-16,...-38,-60,-84,-90,-66,-32,-4,-2,-4, 8,...12,12,10,6,6,6,4,0,0,0,...0,0,-2,-4,0,0,0,-2,-2,0,...0,-2,-2,-2,-2,0];%存有高频干扰心电图信号序列k=1;close all;Figure(1)subplot(2,2,1)axis([0 56-100 50]);

第16页:IIR带阻滤波器设计·程序代码

n=0:55;stem(n,x,'.');hold on;n=0:60;m=zeros(61);plot(n,m);xlabel('n');ylabel('x(n)');title('心电图信号采样序列x(n)');B=[0.09036 2*0.09036 0.09036];A=[1.2686-0.7051];A1=[1.0106-0.3583];A2=[0.9044-0.2155];while(k<=3)

第17页:IIR带阻滤波器设计·程序代码

y=filter(B,A,x);%对信号x进行滤波x=y;if k==2A=A1;endif k==3A=A2;endk=k+1;endsubplot(2,2,3)axis([0 56-15 5]);n=0:55;stem(n,y,'.');hold on;

第18页:IIR带阻滤波器设计·程序代码

n=0:60;m=zeros(61);plot(n,m);xlabel('n');ylabel('y(n)');title('三级滤波后的心电图信号');2)带阻滤波器设计程序代码wp1=650;wp2=850;ws1=700;ws2=800;rp=0.1;rs=50;Fs=2000;

第19页:IIR带阻滤波器设计·程序代码

wp=[wp1,wp2]/(Fs/2);%利用奈奎斯特频率归一化ws=[ws1,ws2]/(Fs/2);[N,wc]=ellipord(wp,ws,rp,rs,'z');%求滤波器阶数[num,den]=ellip(N,rp,rs,wc,'stop');%求滤波器传递函数[H,W]=freqz(num,den);%频率响应plot(W*Fs/(2*pi),abs(H));grid;%绘制网格xlabel('频率/Hz');ylabel('幅值')5.运行结果与分析从图4.4中可以看出低通滤波器除高频噪声的滤波效果。由该图可以看出,滤波前的心电图信号很不整齐,滤波后的心电图信号变化很有规律,消除了毛刺等噪声的影响。

第20页:IIR带阻滤波器设计·运行结果图

图4.5中的带阻滤波器从通带到阻带变化很陡峭,滤波效果不错。6.思考题

  • (1)带阻滤波器与带通滤波器设计有什么区别?
  • (2)用带阻滤波器适合滤除什么样的噪声?图4.4图4.5

第21页:FIR滤波器的设计·实验目的

1.实验目的

  • (1)掌握采用频率取样法设计FIR数字滤波器的原理和方法。
  • (2)熟悉线性相位FIR数字滤波器的特性。2.实验原理1)频率取样法设计的基本思想频率取样法先对理想频响抽样,得到样值H(k),再利用插值公式直接求出系统函数H(z)以便实现之,或者求出频响以便与理想频响作比较。在[0,2π]区间上对理想频响进行N点采样,等效于时域以N为周期延拓。

第22页:FIR滤波器的设计(续)

假设理想频响的采样是H(k),(k=0,1,…,N-1)则其IDFT为:则FIR滤波器的系统函数可写为:所以当采样点数N已知后,只要采样值H(k)确定,则系统函数H(z)就可以确定,要求的FIR滤波器就设计出来了。2)线性相位FIR滤波器的约束条件若分别是对幅度函数H(ω)

第23页:FIR滤波器的设计(续)

和相位函数φ(ψ)的第k个抽样点。在ω∈[0,2π]内的N个样点,则约束条件为:该程序除了给出设计的滤波器的理想低通频谱取样点图、频率取样法设计的低通脉冲响应图以及3.仿真思路低通FIR滤波器的MATLAB设计技术指标为:一线性相位低通滤波器中截止频率为15Hz,τ=12s。MATLAB中滤波器设计的函数采用的是归一化频率,首先要将截止频率化为归一化频率:

第24页:滤波器的低通衰耗特性图外

滤波器的低通衰耗特性图外,还给出一个由两个正弦频率混合得到的信号通过该滤波器后得到的时域波形和幅频波形图。同时为了增大阻带衰耗,采用增加过渡带样点,如在两边过渡带取一个值为0.4的过渡带取点。4.程序代码%线性相位FIR滤波器的频率取样法的设计Fs=50;%采样频率N=25;%取样点数tao =(N-1)/2;wc=2*15/50 ;%N是奇数h(n)为偶数对称,采用N为奇数的Ⅰ型,取样化为归一化频率

第25页:FIR滤波器的设计·程序代码

m=fix(wc/(2/N)+1) ;%取整omega=[0:N-1]*2*pi/N ;%取N个频率样点ABS_H=[ones(1,m),0.4,zeros(1,N-2*m-1),0.4,ones(1,m-1)];H=ABS_H.*exp (-j*tao.*omega);h=ifft(H);figure(1);%第1幅图subplot(2,1,1);stem(omega,abs(H));%画出低通频谱采样点图title('理想低通频谱采样点')subplot(2,1,2);stem([0:N-1],real(h));%画出低通脉冲响应图title('频率采样法设计的低通脉冲响应')Hh=fft(h,512);%对信号进行傅里叶变换Hh_db=20*log10(abs(Hh));figure(2);%第2幅图omega=[0:255]*pi/256;

第26页:FIR滤波器的设计·程序代码

plot(omega,Hh_db(1:256));title('滤波器的低通衰耗特性')set(gca,'ytick',[(-120:20:-20),-3,0]);t=(0:99)/Fs;s=sin(2*pi*t*10)+sin(2*pi*t*20);%给出频率分别是10Hz和20Hz的混合信号进行测试sf=fft(s,512);%对信号进行傅里叶变换y=conv(s,h);%相乘运算yf=fft(y,512);%对信号进行傅里叶变换figure(3);%第3幅图subplot(3,1,1);plot(0.5.*([1:length(y)]-1),y);%画出输入的混合信号时域波形图title('输入的混合信号波形图')subplot(3,1,2);

第27页:FIR滤波器的设计·程序代码

w1=(0:255)/256*(50/2);plot(w1,abs(sf(1:256)));%画出输入的混合信号的幅频图title('混合信号的幅频波形图')subplot(3,1,3);plot(w1,abs(yf(1:256)));title('混合信号通过滤波器后的幅频波形图')5.运行结果与分析理想低通频谱采样点如图4.6所示。理想低通滤波器的衰耗特性如图4.7所示。由图4.8知,测试频率是10Hz和20Hz,通过滤波器后,20Hz大于截止频率,所以被滤除掉。而10Hz小于截止频率所以可通过滤波器。通过上三图可看出,滤波器的各项时域和频域指标均达到了要求。

第28页:FIR滤波器的设计·运行结果图

图4.6理想低通频谱采样点图4.7理想低通滤波器的衰耗特性

第29页:FIR滤波器的设计·运行结果图

图4.8输入的混合信号波形图6.思考题

  • (1)FIR滤波器与IIR滤波器的设计有何异同?
  • (2)用FIR滤波器滤除高频噪声效果如何?

第30页:通过滤波器分离合成信号·实验目的

1.实验目的

  • (1)学会运用MATLAB中的函数设计滤波器。
  • (2)学习用滤波器分离合成信号的方法。2.实验原理1)低通巴特沃斯滤波器的设计
  • ①根据技术指标:通带截止频率、通带最大衰减系数、阻带截止频率、阻带最小衰减系数,利用公式:求出滤波器的阶数N。

第31页:通过滤波器分离合成信号(续)

  • ②再求出归一化极点,代入公式得到归一化传输函数。
  • ③将归一化传输函数去归一化。2) MATLAB中设计低通巴特沃斯滤波器的函数
  • (1)buttord函数。功能:Butterworth滤波器阶数的选择。格式:[N,Wn]=buttord(Wp,Ws,Rp,Rs)。
  • (2)butter函数。butter函数调用格式如下。[B,A]=butter(N,Wn):设计一个N阶的低通巴特沃斯滤波器,返回值B和A分别为滤波器的转移函数的分子分母多项式系数向量,Wn为滤波器的固有频率,为归一化频率。

第32页:通过滤波器分离合成信号(续)

3)带通切比雪夫I型滤波器的设计对于带通滤波器的设计可以通过低通滤波器进行频率变换来实现。下面介绍确定带通滤波器的技术指标的步骤。

  • ①确定带通上限频率、带通下限频率、下阻带上限频率、上阻带下限频率、通带中心频率、通带带宽、通带最大衰减、阻带最小衰减及其对应的归一化频率。
  • ②确定归一化低通技术要求:
  • ③设计归一化低通G(p)。
  • ④将G(p)转换成带通H(s)。

第33页:通过滤波器分离合成信号(续)

4) MATLAB中设计带通切比雪夫Ⅰ型滤波器的频率变换函数

  • ①cheb1ord函数。功能:ChebyshevⅠ型滤波器阶数的选择。格式:[n,Wn]=cheb1ord(Wp,Ws,Rp,Rs)
  • ②cheby1函数。该函数用来设计切比雪夫Ⅰ型滤波器,其调用格式如下。[B,A]=cheby1(N,R,Wn):设计N阶切比雪夫I型的低通模拟滤波器。返回值B和A分别为滤波器的转移函数的分子分母多项式系数向量,Wn为归一化频率。
  • ③lp2bp函数。功能:低通到带通滤波器的变换。格式:[bt,at]=lp2bp(b,a,W0,Bw)。

第34页:通过滤波器分离合成信号·仿真思路

3.仿真思路本实验中给出3个正弦信号,频率分别为300Hz、500Hz、1000Hz,将这3个信号进行叠加,显示合成信号频谱,再通过低通巴特沃斯滤波器分离出300Hz和500Hz的信号,再通过带通切比雪夫I型滤波器识别出1000Hz的信号,并显示低通和带通滤波器的图形及经过滤波器后的信号频谱图,然后经过扬声器播放合成音、通过低通后和通过带通后的声音。4.程序代码t=1/10000:1/10000:3;%设置3个频率的正弦信号s1=sin(2*pi*300*t);s2=sin(2*pi*500*t);s3=2*sin(2*pi*1000*t);

第35页:通过滤波器分离合成信号·程序代码

s=s1+s2+s3;% 3个正弦信号叠加figure(1);subplot(3,1,1); ss=fft(s,4096);SS=(abs(ss(1:1:2049)));%求合成信号频谱k1=0:2048;w1=(1/4096)*k1*10000;%取0...Fs/2的部分plot(w1,SS); grid%画频谱图title('求原信号频谱');% % %通过低通滤波器ws1=1000;wp1=600;wc=5000;wp=wp1/wc;ws=ws1/wc;[n,wn]=buttord(wp,ws,1,30);%巴特沃斯低通滤波[b,a]=butter(n,wn);subplot(3,1,2);sb=3*filter(b,a,s);%合成信号通过低通滤波器

第36页:通过滤波器分离合成信号·程序代码

ssb=fft(sb,4096);SSb=abs(ssb(1:1:2049));%求频谱k1=0:2048;w1=(1/4096)*k1*10000;%画频谱图plot(w1,SSb);gridtitle('经过低通滤波器后的信号频谱');% % %通过带通滤波器ws1=[600 1400];%设计一个阻带为600~1400Hzwp1=[980 1020];%通带为980~1020Hz的带通滤波器wc=5000;wp=wp1/wc;ws=ws1/wc;[n,wn]=cheb1ord(wp,ws,4,45,'s');%切比雪夫I型滤波器[bd,ad]=cheby1(n,4,wn,'bandpass');subplot(3,1,3);sd=3*filter(bd,ad,s);%合成信号通过带通滤波器ssd=fft(sd,4096);SSd=abs(ssd(1:1:2049));%求频谱k1=0:2048;w1=(1/4096)*k1*10000;

第37页:通过滤波器分离合成信号·程序代码

plot(w1,SSd);grid%;画频谱图title('经过带通滤波器后的信号频谱');figure(2)%画低通滤波器的幅频、相频图freqz(b,a,4096,10000);axis([0,4000,-70,1]);figure(3)%画带通滤波器的幅频、相频图freqz(bd,ad,4096,10000);axis([0,4000,-70,1]);sound(s,10000);pause(5);sound(sb,10000);pause(5);sound(sd,10000);5.运行结果与分析低通滤波器幅频响应及相频响应如图4.9所示。带通滤波器幅频响应及相频响应如图4.10所示。经过滤波器的信号频谱如图4.11所示。

第38页:通过滤波器分离合成信号·运行结果图

图4.9图4.10

第39页:通过滤波器分离合成信号·运行结果图

图4.11经过滤波器的信号频谱

第40页:通过以上对滤波器的设计

通过以上对滤波器的设计,可以得出通过设计所需信号的滤波器能滤去其余干扰信号,而且滤波器还可以用来对信号进行变换、调制、解调、去噪、识别信号等。从程序代码中可以看出,只要写入正确的参数,就可以利用MATLAB中的函数去设计所需的滤波器,进而运用于实际中。6.思考题低通滤波器分离合成信号的原理是什么?

第41页:巴特沃斯模拟滤波器·实验目的

1.实验目的

  • (1)进一步了解巴特沃斯模拟滤波器的理论基础、工作方式。
  • (2)学习设计巴特沃斯模拟滤波器。2.实验原理Butterworth模拟低通滤波器的平方幅频响应函数为:Butterworth模拟低通滤波器的特点:通带内具有最大平坦的频率特性,且随着频率的增大平滑单调下降;阶数越高,特性越接近矩形,过渡带越窄,传递函数无零点。

第42页:巴特沃斯模拟滤波器(续)

这里的特性接近矩形,是指通带频率响应段与过渡频率响应段的夹角接近直角,通常为钝角,如果该角为直角,则为理想滤波器。所谓的滤波器的零点就是将该点的值代入传递函数后,传递函数的值为零。所谓的函数的极点就是将该点的函数值代入传递函数后,传递函数的值为无穷大。滤波器的增益是传递函数表达式前的常数。若系统的传递函数表示为:则滤波器的零点为[Z

  • (1),Z
  • (2),Z(nz)],极点为[P
  • (1),P
  • (2),L,P(np)],增益为K。

第43页:巴特沃斯模拟滤波器·仿真思路

3.仿真思路首先绘制Butterworth低通模拟原型滤波器的幅频平方响应曲线,阶数分别为2、5、10、20,然后再设计一个Butterworth带通滤波器,技术指标为:W1=2000Hz,W2=3000Hz,两侧的过渡带宽为500Hz,带通波纹为Rp=1dB,阻带衰减为Rs=60dB,阶数为N=14。Butterworth函数调用格式为:[z,p,k]=buttap(n)。其中n为滤波器的阶数,z、p、k分别为滤波器的零点极点和增益。传递函数具有下面形式:

第44页:滤波器没有零点

滤波器没有零点,极点为[P

  • (1),P
  • (2),L,P(n)],增益为K。[b,a]=zptf(z,p,k)是将模拟原型滤波器函数转换成传递函数形式,b为滤波器传递函数分子多项式系数,a为滤波器传递函数分母多项式系数。[H,w]=freqs(b,a,w)用于求传递函数形式表示的滤波器对应于频率点w的复数频率响应H。4.程序代码1)程序1n=0:0.01:2;for i=1:4

第45页:巴特沃斯模拟滤波器·程序代码

switch icase 1,N=2;case 2;N=5;case 3;N=10;case 4;N=20;end[z,p,k]=buttap(N);[b,a]=zp2tf(z,p,k)[H,w]=freqs(b,a,n);magH2=(abs(H)).^2;hold on;plot(w,magH2);endxlabel('w/wc');ylabel('|H(jw)|^2');

第46页:巴特沃斯模拟滤波器·程序代码

title('butterworth模拟原型滤波器');text(1.5,0.18,'n=2');text(1.3,0.08,'n=5');text(1.16,0.08,'n=10');text(0.93,0.98,'n=20');grid on;2)程序2wp=[2000 3000]*2*pi;%通带临界频率ws=[1500 3500]*2*pi;%阻带临界频率Rp=1;%通带最大衰减Rs=60;%阻带最小衰减[N,Wn]=buttord(wp,ws,Rp,Rs,‘s’);%计算阶数和截止频率[b,a]=butter(N,Wn,'s');w=linspace(1,4000,2000)*2*pi;

第47页:巴特沃斯模拟滤波器·程序代码

H=freqs(b,a,w);plot(w/(2*pi),20*log10(abs(H)));xlabel('Frequency(Hz)');ylabel('Magnitude(dB)');title(['Butterworth Analog bandpass filter order N=',num2str(N)]);grid on;5.运行结果与分析由图4.12和图4.13可知,滤波器的幅度平方特性随着频率单调下降;随着滤波器的阶数增大,其幅度特性也渐渐接近于矩形,符合设计要求的滤波器。6.思考题巴特沃斯滤波器具有什么特点?

第48页:巴特沃斯模拟滤波器·运行结果图

图4.12图4.13

第49页:模拟滤波器的原型设计·实验目的

1.实验目的

  • (1)了解模拟滤波器的基本概念和设计方法。
  • (2)学习模拟滤波器的设计方法及其实现。
  • (3)掌握巴特沃斯模拟低通滤波器的设计思想及方法。2.实验原理滤波是信号处理的一种基本而重要的技术,利用滤波可以从复杂的信号中提取所需要的信号,抑制不需要的部分。所谓滤波器,就是对已知激励可以在时间域或频域产生规定响应的网络。要使滤波器能够提取有用信号,要求滤波器对信号与噪声有不同的增益,对有用信号尽量无失真放大,而对噪声尽量衰减。

第50页:模拟滤波器按幅度特性可分为低通滤波器

模拟滤波器按幅度特性可分为低通滤波器、高通滤波器、带通滤波器和带阻滤波器。2)模拟滤波器设计方法模拟滤波器设计方法已经相当成熟,并且有若干典型的模拟滤波器可供选择,如巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器和贝塞尔滤波器等。这些滤波器的特点各异,巴特沃斯滤波器具有单调下降的幅频特性;切比雪夫滤波器的幅频特性在通带和阻带内有波动,可以提高选择性;贝塞尔滤波器在通带内有较好的线性相位特性;椭圆滤波器的选择性相对于前3种滤波器是最好的。

第51页:模拟滤波器的原型设计(续)

在MATLAB中,提供了上述所有滤波器的设计函数,从而大大降低了滤波器的设计难度。设计模拟滤波器主要有两种方法。一种是首先调用buttap、cheblap等函数设计模拟低通滤波器原型,然后通过lp2lp、lp2hp等函数进行频率变换,将模拟低通滤波器原型转换为高通、带通和带阻等滤波器。另一种是根据滤波器性能参数,首先调用buttord、cheb2ord等阶数估计函数,对满足技术指标的滤波器的最低阶数进行估计,然后再调用滤波器完全设计函数进行模拟滤波器设计。2)信号传输的条件

第52页:模拟滤波器的原型设计(续)

所谓信号无失真传输是指输入信号通过系统后,输出信号的幅值和输入信号的幅值成正比。允许有一定的延时,但没有波形上的畸变。因此,系统的频率响应H(jw)满足下面的特性。即信号无失真传输的条件是:系统的幅频响应|H(jw)|应为常数,相频响应∠ H(jw)应与ω成比。3.仿真思路巴特沃斯模拟低通滤波器的平方幅频响应函数为:

第53页:巴特沃斯滤波器的特点

巴特沃斯滤波器的特点
通带内具有最大平坦的频率特性,且随着频率增大平滑单调下降;阶数越高,特性越接近矩形,过渡带越窄,传递函数无零点。这里的特性接近矩形,是指通带频率响应段与过渡带频率响应段的夹角接近直角。通常该角为钝角,如果该角为直角,则为理想滤波器。MATLAB信号处理工具箱提供巴特沃斯模拟低通滤波器原型设计函数,函数调用格式如下。[z,p,k]=buttap(n)巴特沃斯滤波器的传递函数具有下面的形式:

第54页:模拟滤波器的原型设计(续)

在有关模拟滤波器设计的MATLAB程序中,经常遇到一些特定函数。[b,a]=zp2tf(z,p,k)为将模拟原型滤波器函数(如buttap)设计出的零点z、极点p和增益k形式转换为传递函数(transfer function)形式。通过[H,ω ]=freqs(b,a,ω )求出传递函数形式表示的滤波器对应于频率点ω的复数频率响应H(包括实部和虚部),这里ω为一个向量,表示对应的角频率。若该函数不写输出变量,则执行后绘出该滤波器的幅频响应和相频响应图。4.程序代码

第55页:模拟滤波器的原型设计·程序代码

n=0:0.01:2;for i=1:4;switch icase 1;N=3case 2;N=5;case 3N=10;case 4N=15;end;[z,p,k]=buttap(N);[b,a]=zp2tf(z,p,k);[h,w]=freqs(b,a,n);

第56页:模拟滤波器的原型设计·程序代码

magh=abs(h);subplot(2,2,i);plot(w,magh);axis([0 2 0 1]);xlabel('w/wc');ylabel('|H(jw)|^2');title(['Butterworth analog filter N=',num2str(N)]);grid on;end5.运行结果与分析由图4.15可以看出,巴特沃斯滤波器的频率特性曲线无论在通带还是在阻带内,都是频率的单调函数。因此,当通带边界处满足指标要求,通带内有余量,可以将精度均匀地分布在整个通带内。为此,选择传递函数具有等波纹特性的滤波器,就能在阶数较低的情况下满足系统要求。

第57页:巴特沃斯模拟低通滤波器的幅频特性曲线

图4.15巴特沃斯模拟低通滤波器的幅频特性曲线6.思考题ButterWorth滤波器的边缘是否陡峭对滤波器的性能有何影响?仿真中,边缘是否陡峭与什么参数有关?

第58页:双音多频滤波器的设计·实验目的

1.实验目的

  • (1)进一步了解信号处理的理论基础。
  • (2)学习双音多频以及其实现。
  • (3)掌握双音多频的滤波器检测方法。2.实验原理双音多频(DTMF)信号是音频电话中的拨号信号,由美国AT&T贝尔实验室研制,并用于电话网络中,这种信号制式有很高的拨号速度,且容易自动监测识别。DTMF拨号是目前电话机中普遍采用的一种拨号方式。采用该机制的电话机包含行频和列频两组频率,每组由4个频率组成。电话机上的每一个键都可以由

第59页:双音多频滤波器的设计(续)

它的行频和列频唯一标识。标准频率的选定不是任选的,而是设计时考虑了拨号音、忙音及交流电源的杂音,这些杂音均不在上述DTMF信号的范围内。同时为了避免标准频率之间的谐波干扰出现,故所列最高标准频率小于最低标准频率的3次谐波。DTMF是用两个特定的单音频组合信号来代表数字信号以实现其功能的一种编码技术。两个单音频的频率不同,代表的数字或实现的功能也不同。这种电话机中通常有16个按键,其中有10个数字键0~9和6个功能键*、#、A、B、C、D。由于按照组合原理,一般应有8种不同的单音频信号。因此可

第60页:采用的频率也有8种

采用的频率也有8种,故称之为多频。根据CCITT的建议,国际上采用的频率为697Hz、770Hz、852Hz、941Hz、1209Hz、1336Hz、1477Hz和1633Hz等8种。用这8种频率可形成16种不同的组合,从而代表16种不同的数字或功能键,具体组合如图4.16所示。图4.16 DTMF编码

第61页:解码部分用滤波器组实现

解码部分用滤波器组实现。使用低通及高通滤波器来完成。每个数字都包含低频和高频两个频率分量,分别设计低通和高通滤波器来分离。通过检测出的有效频率,查找表,可以得到解码数字,输出该数字。3.仿真思路若滤波器的输入、输出都是离散时间信号,那么该滤波器的单位冲激响应h(n)也必然是离散的,这种滤波器称为数字滤波器。当用硬件实现时,所需的元件是乘法器、延时器和相加器;而用MATLAB软件实现时,仅仅需要线性卷积程序即可。

第62页:数字滤波器的作用是对输入信号进行滤波

数字滤波器的作用是对输入信号进行滤波,就如同信号通过系统一样。此处使用低通及高通滤波器来完成。每个数字都包含低频和高频两个频率分量,分别设计低通和高通滤波器来分离。低频率分量697Hz、770Hz、852Hz和941Hz的最小间隔为73Hz,设计低通滤波器,使滤波器的通带截止频率介于每两个频率中间,使得检测某一频率时其他频率分量可以很好地被隔离。在这里低通滤波器设计4个,在滤波时逐个调用从低到高一旦检测到有效分量立即终止,保证不出现误检。高频率分量为1209Hz、1336Hz、1477Hz和1633Hz,最小间

第63页:双音多频滤波器的设计·程序代码

隔为127Hz,类似于低通,设计4个高通滤波器,检测时则是从高到低检测,一旦检测到有效分量即终止。分别滤波后,根据循环次数来确定对应的数字。4.程序代码%DTMF信号代表的16个数tm=[1,2,3,65;4,5,6,66;7,8,9,67;42,0,35,68];f1=[697,770,852,941];%行频率向量f2=[1209,1336,1477,1633];%列频率向量TN=input('键入3位电话号码=') ; %输入3位数字TNr=0;%接收端电话号码初值为0m=3;%分别对每位号码数字处理:产生信号,发声,检测for m=1:3;

第64页:双音多频滤波器的设计·程序代码

d=fix(TN/10^(3-m)); %计算出第m位号码数字TN=TN-d*10^(3-m);forp=1:4;forq=1:4;if tm(p,q)==abs(d); break, end%检测与m位号码相符的列号qendif tm(p,q)==abs(d); break, end%检测与m位号码相符的列号pendn=0:400; %为了发声,加长序列x=sin(2*pi*n*f1(p)/8000)+sin(2*pi*n*f2(q)/8000);subplot(3,3,m);plot(n,x);grid;title('未滤波的波形');sound(x,8000); %发出声音pause(0.2) %相邻号码响声之间加0.2秒停顿for k=1:4;

第65页:双音多频滤波器的设计·程序代码

wpz=[0.175 0.2 0.225 0.2375];%低频的4个低通截止数字频率wsz=0.3;rp=3;rs=60;[N,wc]=buttord(wpz(k),wsz,rp,rs);%低通数字滤波器[Bz,Az]=butter(N,wc,'low');y=filter(Bz,Az,x);%滤波后的单频信号z=max(abs(y));%滤波后信号在离散域所取的最大值subplot(3,3,m+3),plot(n,y);;grid;title('低通后的波形');xlabel('n');ylabel('y')ifz>0.7,break,end%查找行号endfor l=1:4;wpz2=[0.4 0.3625 0.325 0.3];%低频的4个高通截止数字频率wsz2=0.25;rp2=3;rs2=60;

第66页:双音多频滤波器的设计·程序代码

[N2,wc2]=buttord(wpz2(l),wsz2,rp2,rs2);%高通数字滤波器[Bz2,Az2]=butter(N2,wc2,'high');y2=filter(Bz2,Az2,x);%滤波后的单频信号z2=max(abs(y2));%滤波后信号在离散域所取的最大值subplot(3,3,m+6);plot(n,y2);;grid;title('高通后的波形');xlabel('n');ylabel('y')if z2>0.7,break,end;%查找列号endTNr=TNr+tm(k,(5-l))*10^(3-m);%将3位电话号码表示成一个3位数enddisp('接受断检测到的号码为:')disp(TNr)5.运行结果与分析从图4.17中可知,3个数字的低频部分频谱相同,高频部分不同,跟假设匹配。通过对滤出频率分析,查找表,可以得出输出的数字。

第67页:双音多频滤波器的设计·运行结果图

图4.17数字‘1’、‘2’、‘3’的时域和滤波后的波形6.思考题双音多频滤波器常用来解决什么问题?

第68页:双音多频滤波器的设计·实验目的

1.实验目的

  • (1)知道直接型滤波器转换为级联型滤波器的原理。
  • (2)了解直接型滤波器转换为级联型滤波器后,级联型网络结构的优点。
  • (3)掌握直接型滤波器转换为级联型滤波器的实现方式及级联型滤波器函数输出的编程原理。2.实验原理为了对连续的或离散的信号进行滤波处理,就必须构造出合适的实际结构。对于同样的系统函数H(z)或H(s)往往有不同的实现方案。常用的有直接形式和级联形式以及并联形式。下面主要讨论直接形式

第69页:到级联形式的转换以及二者的比较

到级联形式的转换以及二者的比较。直接形式用延迟元件和乘法器以及加法器以给定的形式直接实现差分方程,设M=N=4,则差分方程为:在这种形式中将系统函数H(z)写成实系数二阶子系统的乘积形式。首先把分子和分母多项式的根解出,然后把每一对共轭复根或任意两个实根组合在一起,得到二阶子系统。在以下原理中假设N为偶

第70页:数,于是可把上式转化为下面的形式

数,于是可把上式转化为下面的形式
上式中的参量满足:二阶子系统为:在工程实际中,一般把上式所示的结构称为双二阶环节(Biquad),它的输入是第(k −1)个双二阶环节的输出,同时第k个双二阶环节的输出为第(k +1)个双二阶环节的输入。3.仿真思路

第71页:本程序由1个主函数和3个子函数组成

本程序由1个主函数和3个子函数组成,主函数完成由下面的差分方程描述的直接型滤波器到级联型滤波器的转换。15y(n)+10y(n−1)+ 3y(n−2)−5y(n−3)−2y(n−4)=x(n)−4x(n−1)+10x(n−2)−25x(n−3) +16x(n−4)子函数dir2cas实现将直接形式转化为级联形式,子函数stepseq(n0,n1,n2),实现阶跃函数u(n-n0),n1≤n<n2。子函数casfilter是编制实现级联形式滤波器的函数。级联结构中每一个二阶网络决定一对零点和一对极点,可以通过灵活地调整对应零、极点的系数来

第72页:改变一对零程序代码

改变一对零、极点的位置,相对于直接型结构,其优点是调整方便,此外,级联结构中后面的网络输出不会流到前面,运算误差的积累相对于直接型也小。4.程序代码1)主程序b=[1-4 10-25 16];a=[15 10 3-5-2];[b0,B,A]=dir2cas(b,a)stepin=stepseq(0,0,5);format long;hcas=casfilter(b0,B,A,stepin)

第73页:直接型与级联型滤波器的比较·程序代码

hdir=filter(b,a,stepin)format;figure(1)subplot(2,1,1)stem(hcas); hold onplot([0 6],[0 0]);axis([0 6-1.8 1]);title('级联型的阶跃响应'); hold off;subplot(2,1,2)stem(hdir);hold on;plot([0 6],[0,0]);axis([0 6-1.8 1]);title('直接型的阶跃响应'); hold off;

第74页:直接型与级联型滤波器的比较·程序代码

2) stepseq函数function [x,n]=stepseq(n0,n1,n2)%Generate x(n)=u(n-n0);n1<=n<=n2%[x,n]=stepseq(n0,n1,n2)STEP = 0.01;n = n1:STEP:n2;x = n > n0;3) casfilter函数function y=casfilter(b0,B,A,x)[K,L]=size(B);N=length(x);w=zeros(K+1,N);w(1,:)=x;for i=1:Kw(i+1,:)=filter(B(i,:),A(i,:),w(i,:)); endy=b0*w(K+1,:);

第75页:直接型与级联型滤波器的比较·程序代码

4) dir2cas函数function [b0,B,A]=dir2cas(b,a)b0=b(1);b=b0/b0;a0=a(1);a=a/a0;b0=b0/a0;M=length(b);N=length(a);if N>Mb=[b zeros(1,N-M)];else if N<Ma=[a zeros(1,N-M)];elseNM=0;endK=floor(N/2);

第76页:直接型与级联型滤波器的比较·程序代码

B=zeros(K,3);A=zeros(K,3);ifK*2==Mb=[b 0];a=[a 0];endbroots=cplxpair(roots(b));aroots=cplxpair(roots(a));Fori=1:2:2*K;Brow=broots(i:1:i+1,:);Brow=real(poly(Brow));B(fix((i+1)/2),:)=Brow;Arow=aroots(i:1:i+1,:);Arow=real(poly(Arow));A(fix((i+1)/2),:)=Brow;End

第77页:直接型与级联型滤波器的比较·运行结果与分

5.运行结果与分析b0 =0.0667B =1 0 01 0 0A =1 0 01 0 0由图4.18可知,这两种形式结构的滤波器本质上是完全相同的,但相比于直接型结构,级联形式的滤波器可以更灵活地调整零、极点的系数来改变一对零、极点的位置,调整方便,而且级联结构中后面的网络输出不会流到前面,运算误差的积累也很小,因而得到了广泛应用。

第78页:级联型滤波器和直接型滤波器的阶跃响应

图4.18级联型滤波器和直接型滤波器的阶跃响应6.思考题

  • (1)级联型滤波器和直接型滤波器各有什么优缺点?
  • (2)级联型滤波器是如何实现的?

第79页:直接型与级联型滤波器的比较·实验目的

1.实验目的

  • (1)进一步了解自适应滤波原理。
  • (2)学习LMS自适应算法及其MATLAB仿真。2.实验原理自适应滤波器由参数可调的数字滤波器和自适应算法两部分组成。输入信号x(n)通过参数可调数字滤波器后产生输出信号y(n),将其与参数信号d(n)进行比较,形成误差信号e(n)。e(n)通过某种自适应算法对滤波器参数进行调整,最终使e(n)的均方值最小。最小均方误差LMS准则的目的在于使滤波器输出与期望信号误差的平方的统计平均值最小。LMS自适应横向滤波器如图4.19所示。

第80页:自适应滤波LMS算法·运行结果图

图4.19最小均方误差准则的自适应横向滤波器原理图该自适应滤波器的输入矢量为:加权矢量为为:滤波器的输出为:y(n)相对于滤波器期望输出d(n)的误差为:

第81页:根据最小均方误差准则

根据最小均方误差准则,最佳的滤波器参量应使得性能函数——均方误差为最小。假定输入信号x(n)和期望响应d(n)是联合平稳过程,那么在时刻n的均方误差是加权矢量的二次函数,其表示式为:均方误差是权向量的二次函数,它是一个上凹的抛物面,具有唯一的最小值,调解权向量使得均方误差最小,相当于沿抛物面下降寻找最小值。可以用梯度法来求该最小值,对权向量W求导得到均方误差的梯度为:

第82页:自适应滤波LMS算法(续)

在性能曲面上最佳权矢量对应点的梯度等于零,即:该方程称为正则方程,由此解出最佳权向量称为维纳解。利用上式求解,需要精确地知道输入信号和期望信号的先验统计知识,而且还要对矩阵求逆运算。最陡下降法可避免求逆运算,它通过递推的方式寻求加权矢量的最优值,是LMS算法的理论基础。首先设置一个W的初值W

  • (0),可以想象,沿ξ减小的方向调整W,可以找到最佳权矢量。因为梯度方向是ξ增加最快的方向,所以负梯度方向就是ξ减少最快的方向。

第83页:最小均方算法是一种很有用很简单的估计梯度

最小均方算法是一种很有用很简单的估计梯度的方法,其突出特点是计算量小、易于实现,且不要求脱线计算。LMS最核心的算法是使用平方误差代替均方误差,即所以将上式代入最陡下降法迭代计算权矢量的公式得:则LMS算法的基本关系式为:

第84页:自适应滤波LMS算法·仿真思路

3.仿真思路设计一个二阶加权自适应横向滤波器,对一个正弦信号进行滤波。实验通过设置不同的收敛因子μ,由MATLAB程序图形观察滤波效果。讨论μ的重要性。4.程序代码clear all ;fs =10000;t=0:1/fs:1;sn =sin(2 * pi * t);%产生初始信号n= randn (size (t));%产生高斯噪声xn = sn + n;%信号加噪声w = [0 0.5];%设置权初值u=0.00026;%设置收敛因子for i =1:length(t)-1

第85页:自适应滤波LMS算法·程序代码

for i =1:length(t)-1y (i+1)=n(i:i+1)*w';%噪声通过滤波器输出为ye (i+1)=xn (i+1)-y(i+1);w = w+2*u*e(i+1)*n(i:i+1);%权的变化公式endsubplot (3,1,1)plot (t, xn )%输出信号加噪声图形title ('带噪声原始信号')grid;subplot (3,1,2)plot (t , sn)title('原始正弦信号')subplot(3,1,3)plot (t , e)title('滤波结果')

第86页:自适应滤波LMS算法·运行结果与分析

5.运行结果与分析收敛因子μ决定收敛速度及稳定性。图4.20设置的收敛因子为0.00026,图4.21设置的收敛因子为0.0026,图4.22设置的收敛因子为0.026。由图可见,收敛因子的选择对滤波器的性能有很大影响。图4.20,滤波效果不错,但是收敛较慢;图4.21,收敛速度加快,但滤波效果不如图4.20;图4.22收敛速度很快,但滤波效果太差。可见,选择合适的收敛因子对于滤波性能有很大影响。收敛因子的选择,其实就是在滤波性能及速度之间折中。6.思考题

  • (1)简述LMS算法的原理。
  • (2)根据上述结果,收敛因子该如何选择?

第87页:自适应滤波LMS算法·运行结果图

图4.20 μ =0.00026图4.21 μ =0.0026

第88页:自适应滤波LMS算法·运行结果图

图4.22 μ=0.026时正弦加噪信号的滤波

第89页:频率采样定理·实验目的

1.实验目的

  • (1)了解频率采样定理是数字信号处理中的重要理论。
  • (2)掌握频率域采样会引起时域周期化的概念。
  • (3)掌握频率域采样定理及其对频率采样点数选择的指导作用。2.实验原理1)频率域采样定理的要点对信号x(n)的频谱在[0,2π]上等间隔采样N点,得到:则N点的离散傅里叶反变换得到的序列就是原序列x(n)以N为周期进行周期延拓后的主值序列,公式

第90页:频率采样定理(续)

为:由上式可知,频率域采样点数N必须大于等于时域离散信号的长度M(即N≥M),才能使时域不产生混叠,则N点的离散傅里叶反变换得到的序列就是原序列项x(n)。对比上面叙述的频域采样定理,得到一个有用的结论:频域采样,时域信号周期延拓。2)频域采样定理的验证给定信号如下:

第91页:频率采样定理(续)

编写程序分别对频谱函数在区间[0,2π]上等间隔采样32点和16点,得到:3.仿真思路直接调用MATLAB函数fft计算再分别对进行32点和16点IFFT,得到:分别画出的幅度谱,并绘图显示的波形,进行对比和分析。

第92页:就得到频谱函数在程序代码

就得到频谱函数在[0,2π]上的32点和16点频率采样。4.程序代码M=26;N=32;n=0:26;n1=0:M/2;n2=M/2+1:M;xa=n1+1;xb=27-n2;x=[xa,xb];subplot(3,2,2);stem(n,x);title('三角波序列x(n) ')w=linspace(0,pi,1000);%设定频率向量

第93页:频率采样定理·程序代码

X=x*exp(-j*n'*w);subplot(3,2,1);plot(w/pi,abs(X));title('序列x(n)的连续幅度谱')X32k=fft(x,32);k1=[0:31];subplot(3,2,3);stem(k1,abs(X32k));axis([0,15,0,200]);title('32点频率采样幅度谱')x32n=ifft(X32k);nx32=[0:31];subplot(3,2,4);stem(nx32,x32n);title('32点IDFT')

第94页:频率采样定理·程序代码

X16k=fft(x,16);k2=[0:15];subplot(3,2,5);stem(k2,abs(X16k));axis([0,8,0,200]);title('16点频率采样幅度谱')x16n=ifft(X16k);nx16=[0:15];subplot(3,2,6);stem(nx16,x16n);axis([0,20,0,28]);title('16点IDFT')5.运行结果与分析由图4.23可知,在一定的条件下,可以由频域离

第95页:散采样恢复原来的信号

散采样恢复原来的信号,这条件就是
如果序列x(n)的长度为M,则只有当频域采样点数N≥M时,才可由频域采样X(k)恢复原序列x(n),否则将产生时域混叠现象。6.思考题(1)频率采样定理和时域采样定理有什么不同?(2)频率采样定理在什么情况下能恢复原来的信号?

第96页:频率采样定理·运行结果图

图4.23对不同信号的采样

第97页:维纳滤波算法·实验目的

1.实验目的

  • (1)了解维纳滤波器的原理。
  • (2)了解维纳滤波器的MATLAB实现方法。2.实验原理滤波技术是信号分析、处理技术的重要分支,无论是信号的获取、传输,还是信号的处理和交换都离不开滤波技术,它对信号安全可靠和有效灵活地传递是至关重要的。信号分析检测与处理的一个十分重要的内容就是从噪声中提取信号,实现这种功能的有效手段之一是设计具有最佳线性过滤特性的滤波器,当伴有噪声的信号通过这种滤波器时,它可以将信号尽

第98页:维纳滤波算法(续)

可能精确地重现或对信号做出尽可能精确的估计,而对所伴随噪声进行最大限度的抑制。维纳滤波器就是这种滤波器的典型代表之一。1)维纳滤波概述维纳(Wiener)是用来解决从噪声中提取信号的一种滤波方法。这种线性滤波问题可以看成是一种估计问题或一种线性估计问题。如果一个线性系统的单位样本响应为h(n),当输入一个随机信号x(n),且其中x(n)表示信号,v(n)表示噪声,则输出y(n)为:

第99页:维纳滤波算法(续)

希望x(n)通过线性系统h(n)后得到的y(n)尽量接近于s(n),因此称y(n)为s(n)的估计值,即:则维纳滤波器的输入-输出关系可用图4.24表示。图4.24维纳滤波器的输入-输出关系用h(n)进行过滤问题实际上是一种统计估计问题。一般地,从当前的和过去的观察值x(n),x(n −1),x(n − 2),…估计当前的信号值称为过滤或滤波;从过去的观察值,估计当前的或者将来的信号值称为外推或预测;从过去的观察值,估计过去的

第100页:信号值称为平滑或内插

信号值称为平滑或内插。因此维纳滤波器又常常被称为最佳线性过滤与预测或线性最优估计。这里所谓的最佳与最优是以最小均方误差为准则的。用e(n)表示信号的真实值和估计值之间的误差,显然e(n)可能是正值,也可能是负值,并且它是一个随机变量。因此用它的均方误差来表达误差是合理的,均方误差最小即它的平方的统计期望最小。采用最小均方误差准则作为最佳过滤准则的原因还在于它的理论分析比较简单,不要求对概率的描述。2)维纳-霍夫方程的求解

第101页:维纳滤波算法(续)

为了按最小均方误差准则来确定维纳滤波器的冲激响应h(n),令ξ(n)对h(j)的导数等于零,即可得维纳-霍夫方程:其中:维纳-霍夫方程右端的求和范围没有具体标明,实际上有3种情况。

  • ①有限冲激响应(FIR)维纳滤波器,i从0到N−1取得有限个整数值。
  • ②非因果无限冲激响应(非因果IIR)维纳滤波器,i从−∞到+∞取所有整数值。

第102页:维纳滤波算法(续)

③因果无限冲激响应(因果IIR)维纳滤波器,i从0到+∞取正整数值。上述3种情况下维纳-霍夫方程的解法不同,这里只描述FIR维纳滤波器的求解。设滤波器冲激响应序列的长度为N,冲激响应矢量为:滤波器输入数据矢量为:则滤波器的输出为:这样,上述所示的维纳滤波器的标准方程可写成:

第103页:维纳滤波算法(续)

其中,P是s(n)与x(n)的互相关函数,它是一个N维列矢量;R是x(n)的自相关函数,是N阶方阵。利用求逆矩阵的方法直接求解上式,得:opt表示“最佳”,这就是FIR维纳滤波器的冲激响应。3.仿真思路假设一个点目标在x、y平面上绕单位圆做圆周运动,由于外界干扰,其运动轨迹发生了偏移。其中,x方向的干扰为均值为0、方差为0.05的高斯噪声;y方向的干扰为均值为0、方差为0.06的高斯噪声。

第104页:产生满足要求的x方向和y方向随机噪

  • (1)产生满足要求的x方向和y方向随机噪声样本500个。
  • (2)明确期望信号和观测信号。
  • (3)试设计一个FIR维纳滤波器,确定最佳传递函数并用该滤波器处理观测信号,得到其最佳估计。
  • (4)分别绘制出x方向和y方向的期望信号、噪声信号、观测信号、滤波后信号、最小均方误差信号的曲线图。
  • (5)在同一幅图中绘制出期望信号、观测信号和滤波后点目标的运动轨迹。4.程序代码

第105页:维纳滤波算法·程序代码

clear;clf;sita=0:pi/249.5:2*pi;xnoise=sqrt(0.05)*randn(1,500);%产生x轴方向噪声ynoise=sqrt(0.06)*randn(1,500);%产生y轴方向噪声x=cos(sita)+xnoise;%产生x轴方向观测信号y=sin(sita)+ynoise;%产生y轴方向观测信号%产生维纳滤波中x方向上观测信号的自相关矩阵rxx=xcorr(x);for i=1:100for j=1:100mrxx(i,j)=rxx(500-i+j);endend

第106页:维纳滤波算法·程序代码

clear;clf;sita=0:pi/249.5:2*pi;xnoise=sqrt(0.05)*randn(1,500);%产生x轴方向噪声ynoise=sqrt(0.06)*randn(1,500);%产生y轴方向噪声x=cos(sita)+xnoise;%产生x轴方向观测信号y=sin(sita)+ynoise;%产生y轴方向观测信号%产生维纳滤波中x方向上观测信号的自相关矩阵rxx=xcorr(x);for i=1:100for j=1:100mrxx(i,j)=rxx(500-i+j);endend

第107页:维纳滤波算法·程序代码

xd=cos(sita);%产生维纳滤波中x方向上观测信号与期望信号的互相关矩阵rxd=xcorr(x,xd);for i=1:100mrxd(i)=rxd(499+i);endhoptx=inv(mrxx)*mrxd‘;%由维纳-霍夫方程得到的x、方向上的滤波器最优解fx=conv(x,hoptx);%滤波后x方向上的输出nx=sum(abs(xd).^2);eminx=nx-mrxd*hoptx;%x方向上最小均方误差%产生维纳滤波中y方向上观测信号的自相关矩阵ryy=xcorr(y);

第108页:维纳滤波算法·程序代码

for i=1:100for j=1:100mryy(i,j)=ryy(500-i+j);endendyd=sin(sita);%产生维纳滤波中y方向上观测信号与期望信号的互相关矩阵ryd=xcorr(y,yd);for i=1:100mryd(i)=ryd(499+i);endhopty=inv(mryy)*mryd‘;%由维纳-霍夫方程得到的y方向上的滤波器最优解

第109页:维纳滤波算法·程序代码

fy=conv(y,hopty);%滤波后y方向上的输出ny=sum(abs(yd).^2);eminy=ny-mryd*hopty;%y方向上最小均方误差subplot(2,4,1)plot(xd);title('x方向期望信号');subplot(2,4,2)plot(xnoise);title('x方向噪声信号');subplot(2,4,3)plot(x);title('x方向观测信号');subplot(2,4,4)n=0:500;plot(n,eminx);

第110页:维纳滤波算法·程序代码

title('x方向最小均方误差');subplot(2,4,5)plot(yd);title('y方向期望信号');subplot(2,4,6)plot(ynoise);title('y方向噪声信号');subplot(2,4,7)plot(y);title('y方向观测信号');subplot(2,4,8)plot(n,eminy);title('y方向最小均方误差');figure;plot(xd,yd,'k');

第111页:维纳滤波算法(续)

hold on;plot(x,y,'b:');hold on;plot(fx,fy,'g-');title('最终结果');5.运行结果与分析x轴和y轴信号、噪声及最小均方误差如图4.25所示。滤波后得到的信号与原始信号和噪声信号的对比如图4.26所示,滤波后的结果与期望信号还是很接近的,整体上达到了最优滤波的效果。6.思考题

  • (1)维纳滤波原理其实是一个最优估计的问题。简述上述程序实现维纳滤波的过程。

第112页:信号、噪声及最小均方误差滤

图4.25信号、噪声及最小均方误差滤

第113页:维纳滤波算法·运行结果图

图4.26最终结果

  • (2)上例中,估计信号与原始信号之间还有一种事实上的误差存在,为什么?如何使这种误差最小化?

第114页:卡尔曼滤波算法·实验目的

1.实验目的

  • (1)了解卡尔曼滤波器的原理。
  • (2)学习卡尔曼滤波器的仿真实现方法。2.实验原理卡尔曼滤波器是一个“最优化自回归数据处理算法。对于解决大部分的问题,它是最优、效率最高甚至是最有用的。其广泛应用已经超过30年,包括机器人导航、控制、传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等。近年来更被应用于计算机图像处理,例如,面部识别、图像分割、图像边缘检测等方面。

第115页:卡尔曼滤波原理首先要引入一个离散控制过程

卡尔曼滤波原理首先要引入一个离散控制过程的系统,该系统可用一个线性随机微分方程来描述:X(k)=AX(k−1)+BU(k)+W(k)再加上系统的测量值:Z(k)=H X(k)+V(k)上两式子中,X(k)是k时刻的系统状态,U(k)是k时刻对系统的控制量。A和B是系统参数,对于多模型系统,它们为矩阵。Z(k)是k时刻的测量值,H是测量系统的参数,对于多测量系统,H为矩阵。W(k)和V(k)分别表示过程和测量的噪声。

第116页:它们被假设成高斯白噪声

它们被假设成高斯白噪声,其协方差分别是Q、R这里假设它们不随系统状态变化而变化。由于满足上面的条件(线性随机微分系统,过程和测量都是高斯白噪声),卡尔曼滤波器是最优的信息处理器。下面来估算系统的最优化输出。首先利用系统的过程模型预测下一个状态的系统。假设现在的系统状态是k,根据系统的模型,可以基于系统的上一状态而预测出现在状态:X(k|k-1)=AX(k-1|k-1)+BU(k)上式中,X(k|k-1)是利用上一个状态预测的结果,X(k-1|k-1)是上一个状态最优的结果,U(k)为现在状

第117页:卡尔曼滤波算法(续)

态的控制量,如果没有控制量,它可以为0。到现在为止,系统结果已经更新了,可是对应于X(k|k-1)的协方差还没更新。用P表示协方差:P(k|k−1)=A P(k−1|k−1) A'+Q上式中,P(k|k−1)是X(k|k−1)对应的协方差,P(k−1|k−1)是X(k−1|k−1)对应的协方差,A‘表示A的转置矩阵,Q是系统过程的协方差。上面两个公式就是卡尔曼滤波器5个公式当中的前两个,也就是对系统的预测。有了现在状态的预测结果,再收集现在状态的测量值。结合预测值和测量值,可以得到现在状态(k)

第118页:的最优化估算值程序代码

的最优化估算值X(k|k):X(k|k)=X(k|k−1)+Kg(k)(Z(k)−H X(k|k−1))其中Kg为卡尔曼增益(Kalman Gain):Kg(k)= P(k|k−1) H'/(H P(k|k−1) H' + R)至此为止,已经得到了k状态下最优的估算值X(k|k)。但是,为了要令卡尔曼滤波器不断地运行下去,直到系统过程结束,还要更新k状态下X(k|k)的covariance:P(k|k)=(I-Kg(k)H)P(k|k-1)其中I为1的矩阵,对于单模型单测量,I=1。根据上述5个公式,可以很容易地实现计算机程序。

第119页:卡尔曼滤波算法·仿真思路

3.仿真思路把房间看成是一个系统,然后对这个系统建模。已知房间的温度跟前一时刻的温度相同,所以A=1。没有控制量,所以U(k)=0。因此得出:X(k|k-1)=X(k-1|k-1)P(k|k-1)=P(k-1|k-1) +Q因为测量的值是温度计的,跟温度直接对应,所以H=1。X(k|k)= X(k|k-1)+Kg(k) (Z(k)-X(k|k-1))Kg(k)= P(k|k-1) / (P(k|k-1) + R)P(k|k)=(1-Kg(k))P(k|k-1)

第120页:现在模拟一组测量值作为输入

现在模拟一组测量值作为输入。假设房间的真实温度为25度,模拟200个测量值,这些测量值的平均值为25度,但是加入了标准偏差为几度的高斯白噪声(在图4.27中为蓝线)。为了令卡尔曼滤波器开始工作,需要告诉卡尔曼两个零时刻的初始值X(0|0)和P(0|0)。它们的值不用太在意,随便给一个就可以了,因为随着卡尔曼的工作,X会逐渐收敛。但是对于P,一般不要取0,因为这样可能会令卡尔曼完全相信给定的X(0|0)是系统最优的,从而使算法不能收敛。本例选了X(0|0)=1度,P(0|0)=10。

第121页:该系统的真实温度为25度程序代码

该系统的真实温度为25度,图4.27中用蓝线表示。图4.27中红线是卡尔曼滤波器输出的最优化结果(该结果在算法中设置了Q=1e−6,R=1e−1)。4.程序代码clearN=200;w(1)=0;w=randn(1,N)x(1)=0;a=1;for k=2:N;x(k)=a*x(k-1)+w(k-1);end

第122页:卡尔曼滤波算法·程序代码

V=randn(1,N);q1=std(V);Rvv=q1.^2;q2=std(x);Rxx=q2.^2;q3=std(w);Rww=q3.^2;c=0.2;Y=c*x+V;p(1)=0;s(1)=0;For t=2:N;p1(t)=a.^2*p(t-1)+Rww;b(t)=c*p1(t)/(c.^2*p1(t)+Rvv);

第123页:卡尔曼滤波结果

图4.27卡尔曼滤波结果

第124页:本章小结

本章小结本章通过12个实例讲述了MATLAB在数字信号处理中的应用。通过本章的学习,将会对MATLAB的数字信号处理工具箱有一定了解,并能作为进一步学习数字信号处理理论的基础。

第125页:结束页

Thanks书山有路勤为径,学海无涯苦作舟。好好学习,天天向上

顶部目录