课件:神经网络第二章.ppt_第1页
课件:神经网络第二章.ppt_第2页
课件:神经网络第二章.ppt_第3页
课件:神经网络第二章.ppt_第4页
课件:神经网络第二章.ppt_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,2019/8/14,1,Zhongguo Liu_Biomedical Engineering_Shandong Univ.,Biomedical Signal processing matlab 信号处理函数,Zhongguo Liu Biomedical Engineering School of Control Science and Engineering, Shandong University,2,MATLAB是美国MathWorks公司开发的一种功能极其强大的高技术计算语言和内容极其丰富的软件库。它以矩阵和向量的运算以及运算结果的可视化为基础,把广泛应用于各个学科领域的数值分析、矩阵计算、函数生成、信号、图形及图象处理、建模与仿真等诸多强大功能集成在一个便于用户使用的交互式环境之中,为使用者提供了一个高效的编程工具及丰富的算法资源。,关于MATLAB,3,MATLAB与信号处理直接有关的工具箱 ( Toolbox) Signal Processing (信号处理工具箱) Wavelet (小波工具箱) Image Processing(图象处理工具箱) Higher-Order Spectral Analysis (高阶谱分析工具箱),4,与信号处理间接有关的工具箱: Control System (控制系统) Communication (通信) System Identification (系统辨识) Statistics (统计) Neural Network (神经网络),5,例: z=peaks; surf(z);,6,1. rand.m 用来产生均值为0.5、幅度在 01之间均匀分布的伪白噪声: u=rand(N,1) (rand(N)生成N阶矩阵),方差:,如何改变 的方差,与第二章内容有关的MATLAB文件,?,方差函数var(u),标准差函数std(u),7,1. rand.m 用来产生均值为0.5、幅度在 01之间均匀分布的伪白噪声: u=rand(N,1) (rand(N)生成N阶矩阵),randn.m 用来产生均值为零、方差为1 服从高斯(正态)分布的白噪声信号 u=randn(1, N),与第二章内容有关的MATLAB文件,x=randn(1000,1) y=randn(1000,1) v=var(x) h=std(y),8,3.sinc :用来产生 “sinc” 函数: sinc函数定义为:,t=-4:0.1:4; x4=sinc(t); %产生抽样函数 plot(t,x4),9,4. conv.m 用来实现两个离散序列的线性卷积。其调用格式是:y=conv(x,h). 若x(n)和y(n)的长度分别为M和N, 则返回值是长度为M+N-1的序列。,例 x(n)=3 4 5; h(n)=2 6 7 8,求其线性卷积。 MATLAB语句如下: x=3 4 5; h=2 6 7 8; y=conv(x,h) 运行结果: y= 6 26 55 82 67 40,x=3 4 5; h=2 6 7 8; y=xcorr(x,h) y =24 53 86 65 38 10 -0,10,5xcorr: 其互相关和自相关。格式是:(1)rxy=xcorr(x,y):求x,y的互相关; (2)rx=xcorr(x,M,flag):求x的自相关,M:rx的单边长度,总长度为2M+1;flag是定标标志,若 flag=biased, 则表示是“有偏”估计,需将rx(m)都除以N,若flag=unbiased,则表示是“无偏”估计,需将rx(m)都除以(Nabs(m));若flag缺省,则rx不定标。M和flag同样适用于求互相关。,11,第三章 Z变换,. 在MATLAB语言中有专门对信号进行正反Z变换的函数ztrans( ) 和itrans( )。其调用格式分别如下: F=ztrans( f ) 对f(n)进行Z变换,其结果为F(z) F=ztrans(f,v) 对f(n)进行Z变换,其结果为F(v) F=ztrans(f,u,v) 对f(u)进行Z变换,其结果为F(v) f=itrans ( F ) 对F(z)进行Z反变换,其结果为f(n) f=itrans(F,u) 对F(z)进行Z反变换,其结果为f(u) f=itrans(F,v,u ) 对F(v)进行Z反变换,其结果为f(u) 注意: 在调用函数ztran( )及iztran( )之前,要用syms命令对所有需要用到的变量(如t,u,v,w)等进行说明,即要将这些变量说明成符号变量,12,Z变换,例.求数列 fn=e-n的Z变换及其逆变换。命令如下: syms n z fn=exp(-n); Fz=ztrans(fn,n,z) %求fn的Z变换 f=iztrans(Fz,z,n) %求Fz的逆Z变换,例 用MATLAB求出离散序列 的Z变换MATLAB程序如下: syms k z f=0.5k; %定义离散信号 Fz=ztrans(f) %对离散信号进行Z变换 运行结果如下: Fz = 2*z/(2*z-1),13,Z变换,例 已知一离散信号的Z变换式为 , 求出它所对应的离散信号f(k). MATLAB程序如下: syms k z Fz=2*z/(2*z-1); %定义Z变换表达式 fk=iztrans(Fz,k) %求反Z变换 运行结果如下:fk = (1/2)k,例:求序列的Z变换. syms n hn=sym(kroneckerDelta(n, 1) + kroneckerDelta(n, 2)+ kroneckerDelta(n, 3) Hz=ztrans(hn) Hz=simplify(Hz) 运行结果如下:Fz= (z2 + z + 1)/z3,14,1filter.m 本文件用来求离散系统的输出y(n) 。 若系统的h(n)已知,由y(n)=x(n)*h(n),用conv.m文件可求出y(n) 。 y=conv (x, h) filter文件是在A(z)、B(z)已知,但不知道h(n)的情况下求y(n)的。 调用格式是: y=filter(b, a, x) x, y, a 和 b都是向量。,与逆Z变换 相关的matlab 函数,15,与逆Z变换 相关的matlab 函数,2.impz.m 在 A(z)、B(z)已知情况下, 求系统的单 位抽样响应 h(n)。调用格式是: h = impz(b, a, N) 或 h,t=impz(b,a,N) N是所需的的长度。前者绘图时n从1开始, 而后者从0开始。,16,3. residuez.m 将X(z) 的有理分式分解成简单有理分式的和,因此可用来求逆变换。调用格式: r,p,k= residuez(b,a) 假如知道了向量r, p和k,利用residuez.m还可反过来求出多项式A(z)、B(z)。格式是 b,a= residuez(r,p,k)。,17,频率响应函数:freqz.m 已知A(z)、B(z), 求系统的频率响应。基本的调用格式是: H,w=freqz(b,a,N,whole,Fs) N是频率轴的分点数,建议N为2的整次幂;w是返回频率轴座标向量,绘图用;Fs是抽样频率,若Fs1,频率轴给出归一化频率;whole指定计算的频率范围是从0FS,缺省时是从0FS/2.,幅频率响应:Hr=abs(H); 相频响应: Hphase=angle(H); 解卷绕: Hphase=unwrap(Hphase);,18,下面几个文件用于转移函数与极零点之 间的相互转换及极零点的排序: (1) tf2zpk.m, 调用z,p,k=tf2zpk(b,a) (2) zp2tf.m, 调用 b,a=zp2tf (z,p,k) (3)roots.m, 调用 Z1=roots(b) (4) poly.m, 调用b =poly (Z1),与极零点有关的MATLAB函数,19,显示离散系统的极零图函数:zplane.m 本文件可用来显示离散系统的极零图。其调用格式是: zplane(z,p), 或 zplane(b,a), 前者是在已知系统零点的列向量z和极点的列向量p的情况下画出极零图,后者是在仅已知A(z)、B(z) 的情况下画出极零图。,20,用极零分析大致画出幅频响应及相频响应:,例1:,系统,解:,转移函数:,b=1 -4 4; a=1; z,p,k=tf2zpk(b,a) zplane(b,a) zplane(z,p) r,p,k= residuez(b,a) b,a= residuez(r,p,k),z=2; 2 p=0; 0 K=1,r =; p=; k=1 -4 4;,21,用极零分析大致画出幅频响应及相频响应:,例1:,系统,解:,转移函数:,b=1 -4 4; a=1; H,w=freqz(b,a,128,whole,1) Hr=abs(H); Hphase=angle(H); Hphaseu=unwrap(Hphase); subplot(311),plot(Hr) subplot(312),plot(Hphase) subplot(313),plot(Hphaseu),22,例2:,相位的卷绕 (wrapping),解卷绕,b=1; a=0,1; H,w=freqz(b,a,256,whole,1); Hr=abs(H); Hphase=angle(H); Hphase1=unwrap(Hphase);,23,例: 给定系统,求:极零图 单位抽样响应 频率响应,?,H,w=freqz(b,a,256,whole,1); Hr=abs(H); Hphase=angle(H); Hphase=unwrap(Hphase);,h,t=impz(b,a,40); stem(t,h,.);grid on;,zplane(b,a);,b=.1836 .7344 1.1016 .7374 .1836/100 a =1 -3.0544 3.8291 -2.2925 .55075,解:,24,极零图,zplane(b,a);,25,单位抽样响应,h,t=impz(b,a,40); stem(t,h,.);grid on;,26,频率响应,Hphase=angle(H); Hphaseu=unwrap(Hphase);,H,w=freqz(b,a,256,whole,1); Hr=abs(H);,subplot(311), plot(Hr) subplot(312), plot(Hphase) subplot(313), plot(Hphaseu),27,下面几个文件用于转移函数、极零点与二阶子系统sos(Second-Order Section)级联之间的相互转换: (1) tf2sos.m, 调用sos,G=tf2sos(b,a) (2) sos2tf.m, 调用 b,a=sos2tf (sos,G) (3) sos2zp.m, 调用z,p,k= sos2zp (sos,G) (4) zp2sos.m, 调用 sos,G=zp2sos (z,p,k),与信号流图有关的MATLAB函数,sos是一L6的矩阵,每行元素如下排列:,28,1buttord.m 确定 LP DF、或 LP AF的阶次; (1) N, Wn = buttord(Wp, Ws, Rp, Rs); (2)N, Wn = buttord(Wp, Ws, Rp, Rs,s):,与本章内容有关的MATLAB文件,(1)对应 数字滤波器。其中 Wp, Ws分别是通带和阻带的截止频率,其值在 01 之间,1对应抽样频率的一半(归一化频率)。对低通和高通,Wp, Ws都是标量,对带通和带阻,Wp, Ws是12的向量。Rp, Rs 分别是通带和阻带的衰减(dB)。N是求出的相应低通滤波器的阶次,Wn是求出的3dB频率,它和Wp稍有不同。 (2)对应模拟滤波器,各变量含意和(1)相同,但Wp, Ws及Wn的单位为弧度/秒,它们实际上是频率。,29,2buttap.m 设计模拟低通(Butt)原型滤波器。 z, p, k=buttap(N): N是欲设计的低通原型滤波器的阶次,z, p, k是设计出的极点、零点及增益。,b, a 是AF LP 的分子、分母的系数向量,B, A是转换后的的分子、分母的系数向量;(1)中,Wo是低通或高通滤波器的截止频率;,(2)中Wo是带通或带阻滤波器中心频率,Bw是其带宽。,30,4bilinear.m :双线性变换,由模拟滤波器 得到数字滤波器。,Bz, Az=bilinear(B, A, Fs) 式中B, A分别是G(s)的分子、分母多项式 的系数向量,Bz, Az分别是H(z)的分子、分 母多项式的系数向量,Fs是抽样频率。,31,5butter.m 用来直接设计Butterworth数字滤波器,实际上它把 buttord.m, buttap.m, lp2lp.m, bilinear.m等文件都包含了进去,从而使设计过程更简捷。,格式(1)(3) 用来设计数字滤波器,B,A分别是H(z)的分子、分母多项式的系数向量,Wn是通带截止频率,范围在01之间。若Wn是标量,(1)用来设计低通数字滤波器,若Wn是12的向量,则(1) 用来设计数字带通滤波器; (2)用来设计数字高通滤波器; (3) 用来设计数字带阻滤波器,显然,这时的Wn是12的向量;格式(4) 用来设计模拟滤波器。,B,A=butter(N,Wn); (2) B,A=butter(N,Wn,high); (3) B,A=butter(N,Wn,stop); (4) B,A=butter(N,Wn,s),32,例6.7.1(例6.5.1),clear all; fp=100;fs=300;Fs=1000;rp=3;rs=20; wp=2*pi*fp/Fs;ws=2*pi*fs/Fs; Fs=Fs/Fs; % let Fs=1 % Firstly to finish frequency prewarping ; wap=tan(wp/2);was=tan(ws/2); % n,wn=buttord(wap,was,rp,rs,s) % Note: s! z,p,k=buttap(n); % bp,ap=zp2tf(z,p,k) % bs,as=lp2lp(bp,ap,wap) % % Note: s=(2/Ts)(z-1)/(z+1);Ts=1,that is 2Fs=1,Fs=0.5; bz,az=bilinear(bs,as,Fs/2) % h,w=freqz(bz,az,256,Fs*1000); plot(w,abs(h);grid on;,设计 IIR LP DF,,33,例6.7.1(例6.5.1),clear all; wp=.2*pi;ws=.6*pi;Fs=1000; rp=3;rs=20;% % Firstly to finish frequency prewarping; wap=2*Fs*tan(wp/2);was=2*Fs*tan(ws/2); n,wn=buttord(wap,was,rp,rs,s);% Note: s! z,p,k=buttap(n); bp,ap=zp2tf(z,p,k); bs,as=lp2lp(bp,ap,wap) w1=0:499*2*pi; h1=freqs(bs,as,w1); bz,az=bilinear(bs,as,Fs) % Note: z=(2/ts)(z-1)/(z+1); h2,w2=freqz(bz,az,500,Fs); plot(w1/2/pi,abs(h1),w2,abs(h2),k);grid on;,设计 IIR LP DF,,34,例6.7.1(例6.5.1),clear all; wp=.2*pi;ws=.6*pi;Fs=1000; rp=3;rs=20; n,wn=buttord(wp/pi,ws/pi,rp,rs); bz,az=butter(n,wp/pi) bz1,az1=butter(n,wn) h,w=freqz(bz,az,128,Fs); h1,w1=freqz(bz1,az1,128,Fs); plot(w,abs(h),w1,abs(h1),g.);grid on;,设计 IIR LP DF,,35,非线性关系,设计的 AF 并不是按给定的技术指标,但当再由 变回 后,保证了 DF的技术要求。,又称为频率的预变形(Freq. Warping) 。例如 :,抽样频率,36,数字高通滤波器设计步骤,7.6 数字高通, 带通及带阻滤波器的设计,37,对 带通(BP)、带阻(BS)数字滤波器的设计,只需改变图中 Step2 和 Step4:,38,要求:,按上述转换办法,可以求出:,39,1buttord.m 确定 LP DF、或 LP AF的阶次; (1) N, Wn = buttord(Wp, Ws, Rp, Rs); (2)N, Wn = buttord(Wp, Ws, Rp, Rs,s):,与本章内容有关的MATLAB文件,(1)对应 数字滤波器。其中 Wp, Ws分别是通带和阻带的截止频率,其值在 01 之间,1对应抽样频率的一半(归一化频率)。对低通和高通,Wp, Ws都是标量,对带通和带阻,Wp, Ws是12的向量。Rp, Rs 分别是通带和阻带的衰减(dB)。N是求出的相应低通滤波器的阶次,Wn是求出的3dB频率,它和Wp稍有不同。 (2)对应模拟滤波器,各变量含意和(1)相同,但Wp, Ws及Wn的单位为弧度/秒,它们实际上是频率。,40,2buttap.m 设计模拟低通(Butt)原型滤波器。 z, p, k=buttap(N): N是欲设计的低通原型滤波器的阶次,z, p, k是设计出的极点、零点及增益。,b, a 是AF LP 的分子、分母的系数向量,B, A是转换后的的分子、分母的系数向量;(1)中,Wo是低通或高通滤波器的截止频率;,(2)中Wo是带通或带阻滤波器中心频率,Bw是其带宽。,41,4bilinear.m :双线性变换,由模拟滤波器 得到数字滤波器。,Bz, Az=bilinear(B, A, Fs) 式中B, A分别是G(s)的分子、分母多项式 的系数向量,Bz, Az分别是H(z)的分子、分 母多项式的系数向量,Fs是抽样频率。,42,5butter.m 用来直接设计Butterworth数字滤波器,实际上它把 buttord.m, buttap.m, lp2lp.m, bilinear.m等文件都包含了进去,从而使设计过程更简捷。,格式(1)(3) 用来设计数字滤波器,B,A分别是H(z)的分子、分母多项式的系数向量,Wn是通带截止频率,范围在01之间。若Wn是标量,(1)用来设计低通数字滤波器,若Wn是12的向量,则(1) 用来设计数字带通滤波器; (2)用来设计数字高通滤波器; (3) 用来设计数字带阻滤波器,显然,这时的Wn是12的向量;格式(4) 用来设计模拟滤波器。,B,A=butter(N,Wn); (2) B,A=butter(N,Wn,high); (3) B,A=butter(N,Wn,stop); (4) B,A=butter(N,Wn,s),43,6cheb1ord.m 求Cheb-型滤波器的阶; 7cheb1ap.m 设计原型低Cheb-I型模拟滤波器; 8cheby1.m 直接设计数字Cheb-滤波器。,以上三个文件的调用格式和对应的 Butterworth滤波器的文件类似。,44,9cheb2ord.m; 10. ellipord.m; 11.cheb2ap.m; 12. ellipap.m; 13.besselap.m; 14. cheby2.m; 15. ellip.m; 16.besself.m,17impinvar.m 用冲激响应不变法实现频率转换;,对应 Cheby-II、椭圆 IIR 滤波器,45,与本章内容有关的MATLAB文件:,产生窗函数的文件有八个: bartlett(三角窗); 2. blackman(布莱克曼窗) ; 3. boxcar(矩形窗); 4. hamming(哈明窗); 5. hanning(汉宁窗); 6. triang(三角窗); 7. chebwin(切比雪夫窗); 8 .kaiser(凯赛窗);,两端为零,两端不为零,调用方式都非常简单请见help文件,稍为复杂,46,9fir1.m 用“窗函数法”设计FIR DF。调用格式: (1)b = fir1(N,Wn); (2) b = fir1(N,Wn,high); (3) b = fir1(N,Wn, stop); N:阶次,滤波器长度为N1;Wn:通带截止频率,其值在01之间,1对应 Fs/2; b: 滤波器系数。 格式(2)用来设计高通滤波器, 格式(3)用来设计带阻滤波器。 格式(1),若Wn为标量,则设计低通滤波器,若 Wn是12的向量,则用来设计带通滤波器,若Wn是 1L的向量,则可用来设计L带滤波器。,47,对格式(1),若Wn为标量,则设计低通滤波器,若 Wn是12的向量,则用来设计带通滤波器,若Wn是 1L的向量,则可用来设计L带滤波器。这时,格式 (1)要改为: b = fir1(N,Wn, DC-1), 或 b = fir1(N,Wn, DC-0) 前者保证第一个带为通带,后者保证第一个带为阻带。 在上述所有格式中,若不指定窗函数的类型,fir1自动选择Hamming窗。指定窗函数格式: (4)b = fir1(N,Wn,wind); 例 b = fir1(N,Wn,boxcar(N+1); 指定矩形窗,48,10fir2.m 本文件采用“窗函数法”设计具有任意幅 频相应的FIR 数字滤波器。其调用格式是: b = fir2(N, F, M); F是频率向量,其值在01之间,M是和F相对应 的所希望的幅频相应。如同fir1, 缺省时自动选用 Hamming窗。,例 :设计一多带滤波器,要求频率在0.20.3, 0.60.8 之间为1,其余处为零。,设计结果如下:,49,N=30,90时幅频响应响应及理想幅频响应;,N=30,N=90,50,13 firls.m 用最小平方法设计线性相位FIR滤波器,可设计任意给定的理想幅频响应; 14 fircls.m用带约束的最小平方法设计线性相位FIR滤波器,可设计任意给定的理想幅频响应; 15 fircls1.m 用带约束的最小平方方法设计线性相位FIR低通和高通滤波器。 16 sgolay.m 用来设计 Savitzky-Golay FIR 平滑滤波器,其原理见9.1.1节 17 firrcos.m 用来设计低通线性相位FIR滤波器,其过渡带为余弦函数形状。,51,9fir1.m 用“窗函数法”设计FIR DF。调用格式: (1)b = fir1(N,Wn); (2) b = fir1(N,Wn,high); (3) b = fir1(N,Wn, stop); N:阶次,滤波器长度为N1;Wn:通带截止频率,其值在01之间,1对应 Fs/2; b: 滤波器系数。 格式(2)用来设计高通滤波器, 格式(3)用来设计带阻滤波器。 格式(1),若Wn为标量,则设计低通滤波器,若 Wn是12的向量,则用来设计带通滤波器,若Wn是 1L的向量,则可用来设计L带滤波器。,52,对格式(1),若Wn为标量,则设计低通滤波器,若 Wn是12的向量,则用来设计带通滤波器,若Wn是 1L的向量,则可用来设计L带滤波器。这时,格式 (1)要改为: b = fir1(N,Wn, DC-1), 或 b = fir1(N,Wn, DC-0) 前者保证第一个带为通带,后者保证第一个带为阻带。 在上述所有格式中,若不指定窗函数的类型,fir1自动选择Hamming窗。指定窗函数格式: (4)b = fir1(N,Wn,wind); 例 b = fir1(N,Wn,boxcar(N+1); 指定矩形窗,53,例7.1.1.设计低通 DF FIR, 令截止频率 0. 25, 取 M10, 20,40,观察其幅频响应的特点.,clear all;N=10; b1=fir1(N,0.25,boxcar(N+1); b3=fir1(2*N,0.25,boxcar(2*N+1); b4=fir1(4*N,0.25,boxcar(4*N+1); M=128; h1=freqz(b1,1,M); h3=freqz(b3,1,M); h4=freqz(b4,1,M); f=0:0.5/M:0.5-0.5/M; plot(f,abs(h1),f,abs(h3),f,abs(h4);grid; axis(0 0.5 0 1.2),54,例7.1.2: 理想差分器及其设计,clear all;N=40;n=0:N; b1=fir1(N,0.25,boxcar(N+1); b2=fir1(N,0.25,hamming(N+1); win=hamming(N+1); for n=1:N+1 if (n-1-N/2)=0; b1(n)=0; else b1(n)=(-1)(n-1-N/2)/(n-1-N/2); end end for n=1:N+1 if (n-1-N/2)=0; b2(n)=0; else b2(n)=win(n)*(-1)(n-1-N/2)/(n-1-N/2); end end,M=128; h1=freqz(b1,1,M); h2=freqz(b2,1,M); % h=freqz(b,1,M); f=0:0.5/M:0.5-0.5/M; hd=2*pi*f; plot(f,abs(h1),f,abs(h2),f,hd,k-),55,11. remez.m 设计Chebyshev最佳一致逼近FIR滤波器、Hilbert变换器和差分器。调用格式是: (1) b=remez(N, F, A); (2) b=remez(N, F, A, W); (3)b=remez(N,F,A,W,Hilbert); (4) b=remez(N, F, A,W, differentiator) N是给定的滤波器的阶次,b是设计的滤波器的系数,其长度为N1;F是频率向量,A是对应F的各频段上的理想幅频响应,W是各频段上的加权向量。,56,F、A及W的指定方式和例7.4.1和7.4.2所讨论过 的一样,唯一的差别是F的范围为01,而非00.5, 1对应抽样频率的一半。需要指出的是,若b的长度为偶数,设计高通和带阻滤波器时有可能出现错误,因此,最好保证b的长度为奇数,也即N应为偶数。,57,例7.4.1: 设计低通 FIR DF:,b=remez(N, F, A, W),clear all; f=0 .6 .7 1;% 给定频率轴分点; A=1 1 0 0;% 频率分点上理想幅频响应; weigh=1 10;% 频率分点上的加权; b=remez(32,f,A,weigh); % 设计出切比雪夫最佳一致逼近滤波器; h,w=freqz(b,1,256,1); h=abs(h); h=20*log10(h); figure(1);stem(b,.);grid; figure(2);plot(w,h);grid;,调整通带、阻带的加权及滤波器的长度。,调整N或W的结果,58,例7.4.2: 设计多阻带滤波器,抽样频率500Hz, 在50Hz、 100Hz 及150Hz处陷波。,通带加权为8,阻带为1,-17dB,通带、阻带加权都是1,-25dB,59,例7.4.2: 设计多阻带滤波器,抽样频率500Hz, 在50Hz、 100Hz 及150Hz处陷波。,clear all; f=0 .14 .18 .22 .26 .34 .38 .42 .46 .54 .58 .62 .66 1; A=1 1 0 0 1 1 0 0 1 1 0 0 1 1; weigh1=8 1 8 1 8 1 8; b1=remez(64,f,A,weigh1); h1,w1=freqz(b1,1,256,1); h1=abs(h1);h1=20*log10(h1); subplot(211);plot(w1,h1);grid;axis(0 0.5 -60 10) title(N=32,weight=8 1 8 1 8 1 8,FontSize,14,Color,r),250Hz,60,12remezord.m 本文件用来确定在用Chebyshev最佳一致逼近设计FIR滤波器时所需要的滤波器阶次。其调用格式是: N, Fo, Ao, W = remezord(F, A, DEV, Fs)。 F、A的含意同文件remez,DEV是通带和阻带上的偏差;输出的是适合要求的滤波器阶次N、频率向量Fo、幅度向量Ao和加权向量W。若设计者事先不能确定要设计的滤波器的阶次,那么,调用remezord后,就可利用这一族参数调用remez, 即 b=remez(N, Fo, Ao, W),从而设计出所需要滤波器。因此,remez和remezord常结合起来使用。需要说明的是,remezord给出的阶次N有可能偏低,这时适当增加N即可;另外,最好判断一下,若N为奇数,就令其加一,使其变为偶数,这样b的长度为奇数。,61,fftfilt.m 用叠接相加法实现长序列卷积。格式是: y=fftfilt(h,x) 或 y=fftfilt(h, x,N),与本章有关的 MATLAB 文件,记 的长度为 , 的长度为 。 若采用第一个调用方式,程序自动地确定对 分段的长度 及做FFT的长度 , 显然, 是最接近 的2的整次幂。分的段数为 。,采用第二个调用方式,使用者可自己指定做FFT的长度。建议使用第一个调用方式。,62,clear; % 用叠接相加法,计算滤波器系数h和输入信号x的卷积 % 其中h为10阶hanning窗,x是带有高斯白噪的正弦信号 h=fir1(10,0.3,hanning(11);% h: is the impulse response N=500;p=0.05;f=1/16; % of a low-pass filter. u=randn(1,N)*sqrt(p); % u:white noise s=sin(2*pi*f*0:N-1); % s:sine signal x=u(1:N)+s; % x: a long sequence; y=fftfilt(h,x); % y=x*h subplot(211) plot(x); subplot(212) plot(y);,例3.9.1令x(n)为一正弦加白噪声信号,长度为500, h(n)是用fir1.m文件设计出的一个低通FIR滤波器,长度为11.试用fftfilt实现长序列的卷积,63,64,clear; % 生成滤波器系数h和混有高斯白噪的正弦信号x h=fir1(10,0.3,hanning(11); N=500;p=0.05;f=1/16; u=randn(1,N)*sqrt(p);% s=sin(2*pi*f*0:N-1); x=u(1:N)+s; % 将x分为长度为L的小段 L=20;M=length(h); y=zeros(1,N+M-1); tempy=zeros(1,M+L-1); tempX=zeros(1,L); for k=0:N/L-1 tempx(1:L)=x(k*L+1:(k+1)*L); tempy=conv(tempx,h); y=y+zeros(1,k*L),tempy,zeros(1,N-(k+1)*L); end subplot(211);plot(x) subplot(212);plot(y(1:N),65,66,hilbert.m 文件用来计算信号Hilbert变换。调用 的格式是: y=hilbert(x),y的实部就 是 ,虚部是的Hilbert变换 。 所以,y 实际上是 x 的解析信号。,67,与本章有关的MATLAB文件,czt.m 调用格式是: Xczt(x, M, W, A) 。x是待变换的时域信号,其长度设为N,M是变换的长度,W确定变换的步长,A确定变换的起点。若M=N, A=1, 则CZT变成DFT。,A=exp(j*2*pi*f0/fs); W=exp(-j*2*pi*DELf/fs);,68,例4.7.2 设x(n)是两个正弦信号及白噪声的叠加,进行频谱分析。 clear all; % 产生两个正弦加白噪声; N=256; f1=.1;f2=.2;fs=1; a1=5;a2=3; w=2*pi/fs; x=a1*sin(w*f1*(0:N-1)+a2*sin(w*f2*(0:N-1)+randn(1,N); % 应用FFT 求频谱; subplot(3,1,1); plot(x(1:N/4); f=-0.5:1/N:0.5-1/N; X=fft(x); y=ifft(X); subplot(3,1,2); plot(f,fftshift(abs(X); subplot(3,1,3); plot(real(y(1:N/4);,69,70,例4.7.2 设x(n)由三个实正弦组成,频率分别是8HZ, 8.22HZ 和9HZ, 抽样频率是40HZ ,时域取128点。,用CZT计算的DFT,用FFT计算的DFT,7(7+M0.05) HZ 的CZT变换,71,程序 clear all; % 构造三个不同频率的正弦信号的叠加作为试验信号 N=128; f1=8;f2=8.22;f3=9;fs=40; stepf=fs/N; n=0:N-1; t=2*pi*n/fs; n1=0:stepf:fs/2-stepf; x=sin(f1*t)+sin(f2*t)+sin(f3*t); M=N; W=exp(-j*2*pi/M); % A=1时的czt变换 A=1; Y1=czt(x,M,W,A); subplot(311) plot(n1,abs(Y1(1:N/2);grid on;,72,% DTFT Y2=abs(fft(x); subplot(312) plot(n1,abs(Y2(1:N/2);grid on; % 详细构造A后的czt M=60; f0=7.2; DELf=0.05; A=exp(j*2*pi*f0/fs); W=exp(-j*2*pi*DELf/fs); Y3=czt(x,M,W,A); n2=f0:DELf:f0+(M-1)*DELf; subplot(313);plot(n2,abs(Y3);grid on;,73,1filtfilt.m 本文件实现零相位滤波。其调用格式是:y=filtfilt(B, A, x) 。式中B是 的分子多项式,A是分母多项式,x是待滤波信号,y是滤波后的信号。,clear; N=32; n=-N/2:N+N/2; w=0.1*pi; x=cos(w*n)+cos(2*w*n); subplot(311);stem(n,x,.);grid on; xlabel(n); b=0.06745 0.1349 0.06745; a=1 -1.143 0.4128; y=filtfilt(b,a,x); % 用给定系统(b,a)对信号 x 作零相位滤波; y1=filter(b,a,x); % 用给定系统(b,a)对信号 x 作低通滤波; subplot(312);stem(n,y,.);grid on; xlabel(n); subplot(3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论