范文一:采用线性探测方法解决冲突
已知一个线性表(38,25,74,63,52,48),假定采用散列函数h(key)=key%7计算散列地址,并散列存
储在散列表A[0..6]中,若采用线性探测方法解决冲突,则在该散列表上进行等概率成功查找的平均查找长度为___
_______.
(52)A.1.5 B.1.7 C.2.0 D.2.3
分析:利用该散列函数散列存储结果为
68|48 | |38|25|74|52
位置 0 1 2 3 4 5 6
平均查找长度=总的查找次数/元素数=(1*3+2*1+3*1+4*1)/6=2.0
参考答案:(52)C
能分析一下具体怎么解答吗???
要计算散列表上的平均查找长度,我们首先必须要知道在建立这个散列表时,每个数据存储时进行了几次散列。这样就知道哪一个元素,查找的长度是多少。散列表的填表过程如下:首先存入第一个元素38,由于h(38)=38%7=3,又因为3号单元现在没有数据,所以把38存入3号单元。 接着存入第二个元素25,由于h(25)=25%7=4,又因为4号单元现在没有数据,所以把25存入4号单元。 接着存入第三个元素74,由于h(74)=74%7=4,此时的4号单元已经被25占据,所以进行线性再散列,线性再散列的公式为:Hi=(H(key)+di)% m ,其中的di=1,2,3,4...。所以H1=(4+1)%7=5,此时的单元5没有存数据,所以把74存入到5号单元。 接着存入第四个元素63,由于h(63)=63%7=0,此时的0号单元没有数据,所以把63存入0号单元。 接着存入第五个元素52,由于h(52)=52%7=3,此时的3号单元已被38占据,所以进行线性再散列:H1=(3+1)%7=4,但4号单元也被占据了,所以再次散列:H2=(3+2)%7=5,但5号单元也被占据了,所以再次散列:H3=(3+3)%7=6,6号单元为空,所以把52存入6号单元。 最后存入第六个元素48,由于h(48)=48%7=6,此时的6号单元已被占据,所以进行线性再散列:H1=(6+1)%7=0,但0号单元也被占据了,所以再次散列:H2=(6+2)%7=1,1号单元为空,所以把48存入1号单元。 如果一个元素存入时,进行了N次散列,相应的查找次数也是N,所以38,25,63这三个元素的查找长度为1,74的查找长度为2,48的查找长度为3,52的查找长度为4。所以平均查找长度为:(1+1+1+2+3+4)/6=2。
1.h(key)=key%7---->h(38)=3 无冲突 故查找38需1次 2.h(hey)=key%7---->h(25)=4 无冲突 故查找25需1次 3.h(hey)=key%7---->h(74)=4 与25冲突 线性探测方法解决冲突:H(i)=(4+i)mod7 i=1,2,3..... 所以:H(1)=(4+1)mod7=5 无冲突 故查找25需2次 4.h(hey)=key%7---->h(63)=0 无冲突 故查找63需1次 5.h(hey)=key%7---->h(52)=3 与38冲突 H(1)=(3+1)mod7=4 与25冲突 H(2)=(3+2)mod7=5 与74冲突 H(3)=(3+3)mod7=6 无冲突 故查找52需4次 6.同样查找48需3次 ASL=(1+1+2+1+4+3)/6=2.0
范文二:哈希表线性探测解决冲突
#include #include #define MAX 50 #define NULLKEY-1 typedef int KeyType; typedef struct { KeyType key_num; }RecordType; typedef RecordType HashTable[MAX]; void Init(HashTable ht) {int i; for(i=0;i<> ht[i].key_num=NULLKEY; } int Hash(int key) { int mode=key%13; return mode; } int InsertHash(HashTable ht,RecordType record) {int i,pi,p0=Hash(record.key_num); printf("%d%d\n",p0,record.key_num); if(ht[p0].key_num==NULLKEY) ht[p0].key_num==record.key_num; else{for(i=1;i<> {pi=(p0+i)%MAX; if(ht[pi].key_num==NULLKEY) {ht[pi].key_num=record.key_num; break; } } } return 1; } int Hash_Create(HashTable ht) {int i,n; RecordType record[]={19,14,23,1,68,20,84,27,56,11,10,79}; n=sizeof(record)/sizeof(RecordType); printf("%d\n",n); for(i=0;i<> InsertHash(ht,record[i]); printf("\nCreate Successfully!\n"); return 1; } int Hash_Search(HashTable ht,int key) {int p0; p0=Hash(key); if(ht[p0].key_num==NULLKEY) return NULLKEY; else if(ht[p0].key_num==key) return p0; else{int i;int pi; for(i=1;i<> {pi=(p0+i)%MAX; if(ht[pi].key_num==NULLKEY) return NULLKEY; else if(ht[pi].key_num==key) return pi; } } return NULLKEY; } int main() {int key=NULLKEY; HashTable ht; printf("\n设有一组关键字(19,14,23,1,68,20,84,27,56,11,10,79)"); printf("\n用线性探测再散列方法解决冲突\n"); Init(ht); Hash_Create(ht); printf("\nPlease input the key you want Search:\n"); scanf("%d",&key); key=Hash_Search(ht,key); if(key!=NULLKEY) printf("\nkey_num:%d\n",ht[key].key_num); return 0; } 课 程 设 计 说 明 书 题目:用双线性变换法设计IIR滤波器 学院(系):电气工程学院 年级专业: 07级仪表2班 学 号: 学生姓名: 指导教师: 教师职称: 燕山大学课程设计(论文)任务书 院(系):电气工程学院 基层教学单位:自动化仪表系 学 号 学生姓名 专业(班级) 07级仪表2班 设计题目 用双线性法设计IIR滤波器 设 通带截止频率wp, 计 阻带截止频率ws, 技 通带衰减rp, 术 阻带衰减rs, 参 采样频率fs 数 基于MATLAB软件,利用双线性变换法设计IIR低通、高通、带通、带阻数字滤波器,并 设 分析滤波器单位脉冲响应,频率响应特性。设计报告中要求画出所设计的滤波器网络结构图。 计 要 求 工 作 设计IIR滤波器及其网络结构图,工作量适中。 量 前三天,去图书馆查阅资料,熟悉Matlab程序; 工 中间四天,明确设计思路,设计程序 作 后三天,调试、修改程序,完成任务书 计 划 1薛年喜 MATLAB在数字信号处理中的应用(第二版)清华大学出版社,2008 参 考 2谢平 王娜 林洪彬 信号处理原理及应用 机械工业出版社,2009 资 料 指导教师签字 基层教学单位主任签字 说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。 年 月 日 燕山大学课程设计评审意见表 指导教师评语: 成绩: 指导教师: 年 月 日 答辩小组评语: 成绩: 组长: 年 月 日 课程设计总成绩: 答辩小组成员签字: 年 月 日 燕山大学课程设计说明书 目录 一、摘要 ............................................................................................. 3 二、设计思想 ..................................................................................... 3 2.1 IIR数字滤波器设计思路 ............................................................. 3 2.2设计IIR数字滤波器的两种方法 ................................................ 4 2.3双线性变换法的基本原理 ............................................................ 5 2.4用双线性变换法设计IIR数字滤波器的步骤............................. 6 三、程序源代码和运行结果 .............................................................. 6 3.1低通滤波器 ................................................................................... 6 3.2高通滤波器 ................................................................................... 9 3.3带通滤波器 ................................................................................. 12 3.4带阻滤波器 ................................................................................. 14 四、网络结构图 ............................................................................... 17 五、心得体会 ................................................................................... 19 参考文献 ........................................................................................... 19 - 2 - 燕山大学课程设计说明书 一、摘要 数字滤波器是具有一定传输选择特性的数字信号处理装置,其输入、输出均为数字信号,实质上是一个由有限精度算法实现的线性时不变离散系统。它的基本工作原理是利用离散系统特性对系统输入信号进行加工和变换,改变输入序列的频谱或信号波形,让有用频率的信号分量通过,抑制无用的信号分量输出。数字滤波器和模拟滤波器有着相同的滤波概念,根据其频率响应特性可分为低通、高通、带通、带阻等类型,与模拟滤波器相比,数字滤波器除了具有数字信号处理的固有优点外,还有滤波精度高(与系统字长有关)、稳定性好(仅运行在0与l两个电平状态)、灵活性强等优点。数字滤波器按单位脉冲响应的性质可分为无限长单位脉冲响应滤波器IIR和有限长单位脉冲响应滤波器(FIR)两种。本文介绍IIR数字滤波器的设计。 二、设计思想 2.1 IIR数字滤波器设计思路 IIR 数字滤波器可用一个n阶差分方程表示 y(n)=Σbx(n-r)+Σay(n-k) rk 或用它的Z域系统函数: 对照模拟滤波器的传递函数: 不难看出,数字滤波器与模拟滤波器的设计思路相仿,其设计实质也是寻找一组系数{b,a},去逼近所要求的频率响应,使其在性能上满足预定的技术要求;不同的是模拟滤波器的设计是在S平面上用数学逼近法去寻找近似的所需特性H(S),而数字滤波器则是在Z平面寻找合适的H(z)。IIR数字滤波器的单位响应是无限长的,而模拟滤波器一般都具有无限长的单位脉冲响应,因此与模拟滤波器相匹配。由于模拟滤波器的设计在理论上已十分成熟,因此数字滤波器设计的关键是将H(S)?H(Z),即,利用复值映射将模拟滤波器离散化。已经证明,冲击响 - 3 - 燕山大学课程设计说明书 应不变法和双线性变换法能较好地担当此任,则在此基础上,数字滤波器的设计就可首先归结为模拟滤波器的设计了。 数字滤波器的设计步骤如下图所示。 数 字数字滤指标模拟滤相应模模拟滤 波器技参数波器技拟滤波滤波波术指标 变换 术指标 器设计 器离器 散化 数字滤波器设计步骤 2.2设计IIR数字滤波器的两种方法 IIR数字滤波器的的设计就是在给定了滤波器的技术指标后,确定滤波器的阶数n和系数{ai,bi}。在满足技术指标的条件下,滤波器的结束应尽可能低,因为滤波器的阶数越低,实现滤波器的成本就越低。 在设计IIR滤波器时,常用的方法是利用模拟滤波器来设计数字滤波器。广泛采取这种方法的因素有:1,模拟滤波器设计技术已非常成熟;2,可得闭合形式的解;3,关于模拟滤波器设计有完整的设计公式和图表可以利用很查阅。 为实现从模拟滤波器到数字滤波器的转换,需要从系统的描述方法来考虑转换问题,无论是模拟滤波器还是数字滤波器,描述系统的基本方法都有四种,如表所示,且同一滤波器的各种描述形式之间可以相互转换。 模拟滤波器 数字滤波器 模拟滤波器 数字滤波器 单位脉冲响应h(t) 单位采样响应h(n) 系统函数H(s) 系统函数H(z) aa jω频率响应H(jΩ) 频率响应H,e) 微分方程 差分方程 a 滤波器描述系统的方法 因此,IIR滤波器的设计方法是首先将数字滤波器的技术指标转化为对应模拟滤波器的技术指标,然后设计满足技术指标的模拟滤波器Ha(s),然后将设计出的模拟滤波器Ha(s)转换为满足技术指标的数字滤波器H(z)。将Ha(s)转换成H(z)的最终目的,是希望数字滤波器的频率响应H(ejω)尽量接近模拟滤波器Ha(jΩ)。将系统函数H(z)从s平面转换到z平面的方法有很多种,但工程上常用的有两种:一种是使数字滤波器的h(n)近似于模拟滤波器的ha(t),可导出 - 4 - 燕山大学课程设计说明书 脉冲响应不变法;另一种使数字滤波器的差分方程近似于模拟滤波器的微分方程,由此可导出双线性变换法。 2.3双线性变换法的基本原理 脉冲响应不变法使得数字滤波器在时域上能够较好的模仿模拟滤波器,但是 sTsze,z由于从平面到平面的映射具有多值性,使得设计出来的数字滤波器不可避免的出现频谱混迭现象。为了克服脉冲响应不变法可能产生的频谱混跌效应的缺点,我们使用一种新的变换——双线性变换。双线性变换法可认为是基于对微分方程的积分,利用对积分的数值逼近的道德。 Hs()仿真滤波器的传递函数为 Mkcs,k,0k (),,,HsMNNkds,k,1k 将展开为部份分式的形式,并假设无重复几点,则 NAkHs(), ,,ssk,1pk xt()那么,对于上述函数所表达的数字信号处理系统来讲,其仿真输入和模拟输 yt()出有如下关系 ,ytsytAxt()()(),, p 利用差分方程来代替导数,即 ynyn()(1),,,yt(), T 同时令 1ytynyn()()(1),,, ,,2 1xtxnxn()()(1),,, ,,2 - 5 - 燕山大学课程设计说明书 这样,便可将上面的微分方程写为对应的差分方程形式 s1Ap ()(1)()(1)()(1)ynynynynxnxn,,,,,,,,,,,,,,T22 两边分别取变换,可得 z YzA(),, Hz(),121,zXz(),,sp,1Tz1, 这样,通过上述过程,就可得到双线性变换中的基本关系,如下所示 ,121,z s,,,1Tz1, 2,sT z,2,sT sz所谓的双线性变换,仅是指变换公式中与的关系无论是分子部份还是分母部份都是线性的。 2.4用双线性变换法设计IIR数字滤波器的步骤 MATLAB中设计IIR数字滤波器的具体步骤如下: (1) 把给出的数字滤波器的性能指标转换为模拟低通滤波器的性能指标; (2) 根据转换后的性能指标,通过滤波器结束选择函数,来确定滤波器的最小阶 数n和固有频率wn; (3) 由最小阶数n得到低通滤波器原型; (4) 由固有频率wn把模拟低通滤波器转换为模拟低通、高通、带通或带阻滤波 器; (5) 运用双线性变换法把模拟滤波器转换成数字滤波器。 三、程序源代码和运行结果 3.1低通滤波器 Clear %通带截止频率 wp=100*2*pi; - 6 - 燕山大学课程设计说明书 %阻带截止频率 ws=150*2*pi; %通带衰减 rp=0.5; %阻带衰减 rs=30; %采样频率 fs=2000; %计算阶数,与截止频率 [n,wc]=cheb2ord(wp,ws,rp,rs,'s') 比雪夫2型数字滤波器 %建立切 [z,p,k]=cheb2ap(n,rs); %零极点转换到空间状态表达式 [a,b,c,d]=zp2ss(z,p,k); %低通转换到高通 [at1,bt1,ct1,dt1]=lp2lp(a,b,c,d,wc); %双线性变换 [at2,bt2,ct2,dt2]=bilinear(at1,bt1,ct1,dt1,fs); %空间状态表达式转换到传递函数 [num,den]=ss2tf(at2,bt2,ct2,dt2) %绘制幅频、相频图(频率响应特性图) figure(1); freqz(num,den,128,fs); grid on; %绘制脉冲响应特性图 figure(2); impz(num,den,128,fs); %滤波检验 figure(3); t=0:0.0005:0.2; x=sin(2*pi*50*t)+sin(2*pi*200*t); y=filter(num,den,x); plot(t,x,':',t,y,'-'); grid; legend('X Signal','Y Signal'); 运行结果: n =6 wc =879.2559 num = 0.0287 -0.1085 0.2038 -0.2447 0.2038 -0.1085 0.0287 den = 1.0000 -4.4499 8.4145 -8.6176 5.0302 -1.5841 0.2103 - 7 - 燕山大学课程设计说明书 频率响应 脉冲响应 - 8 - 燕山大学课程设计说明书 滤波检验 3.2高通滤波器 Clear %通带截止频率 wp=100*2*pi; %阻带截止频率 ws=150*2*pi; %通带衰减 rp=0.5; %阻带衰减 rs=30; %采样频率 fs=2000; %计算阶数,与截止频率 [n,wc]=cheb2ord(wp,ws,rp,rs,'s'); %建立切比雪夫2型数字滤波器 [z,p,k]=cheb2ap(n,rs); %零极点转换到空间状态表达式 [a,b,c,d]=zp2ss(z,p,k); %低通转换到高通 [at1,bt1,ct1,dt1]=lp2hp(a,b,c,d,wc) %双线性变换 [at2,bt2,ct2,dt2]=bilinear(at1,bt1,ct1,dt1,fs) %空间状态表达式转换到传递函数 - 9 - 燕山大学课程设计说明书 [num,den]=ss2tf(at2,bt2,ct2,dt2); %绘制幅频、相频图(频率响应特性图) figure(1); freqz(num,den,128,fs); grid on; %绘制脉冲响应特性图 figure(2); impz(num,den,128,fs); grid; %滤波检验 figure(3); t=0:0.0005:0.1; x=sin(2*pi*50*t)+sin(2*pi*200*t); y=filter(num,den,x); plot(t,x,':',t,y,'-'); legend('X Signal','Y Signal'); 运行结果: n =6 wc =879.2559 num = 0.5365 -3.0688 7.4574 -9.8501 7.4574 -3.0688 0.5365 den = 1.0000 -4.5215 8.8272 -9.4731 5.8745 -1.9914 0.2878 频率响应特性 - 10 - 燕山大学课程设计说明书 脉冲响应 滤波校验 - 11 - 燕山大学课程设计说明书 3.3带通滤波器 clear; %下通带截止频率wp1=80HZ,上通带截止频率wp2=170HZ,阻带下限频率ws1=100HZ,阻带上限频 率ws2=150HZ;解得wp=85HZ,ws=139Hz %通带截止频率wp wp=85*2*pi; %阻带截止频率ws ws=139*2*pi; %通带衰减rp rp=0.5; %阻带衰减rs rs=30; %采样频率 fs=2000; %计算阶数n,与截止频率wn [n,wc]=cheb2ord(wp,ws,rp,rs,'s') %建立切比雪夫2型数字滤波器 [z,p,k]=cheb2ap(n,rs); %零极点模型转换到空间状态模型 [a,b,c,d]=zp2ss(z,p,k); %低通转换到高通 [at1,bt1,ct1,dt1]=lp2bp(a,b,c,d,wc,50*2*pi); %用双线性变换法实现模拟滤波器到数字滤波器的转换 [at2,bt2,ct2,dt2]=bilinear(at1,bt1,ct1,dt1,fs); %空间状态模型转换到传递函数模型 [num,den]=ss2tf(at2,bt2,ct2,dt2) %绘制幅频、相频图(频率响应特性图) figure(1); freqz(num,den,128,fs); grid on; %绘制脉冲响应特性图 figure(2); impz(num,den,128,fs); grid; %滤波检验 figure(3); t=0:0.0005:0.3; x=sin(2*pi*50*t)+sin(2*pi*150*t); y=filter(num,den,x); plot(t,x,':',t,y,'-'); legend('X Signal','Y Signal'); 运行结果: n =5 - 12 - 燕山大学课程设计说明书 wc =849.6593 num =0.0100 -0.0720 0.2250 -0.3787 0.3207 0.0000 -0.3207 0.3787 -0.2250 0.0720 -0.0100 den = 1.0000 -8.7737 35.4059 -86.4271 141.2110 -161.2926 130.4129 -73.7145 27.8888 -6.3824 0.6718 频率响应特性 脉冲响应 - 13 - 燕山大学课程设计说明书 滤波检验 3.4带阻滤波器 clear; %下通带截止频率wp1=80HZ,上通带截止频率wp2=170HZ,阻带下限频率ws1=100HZ,阻带上限频 率ws2=150HZ;解得wp=89HZ,ws=225Hz %通带截止频率wp wp=89*2*pi; %阻带截止频率ws ws=225*2*pi; %通带衰减rp rp=0.5; %阻带衰减rs rs=30; %采样频率 fs=2000; %计算阶数n,与截止频率wn [n,wc]=cheb2ord(wp,ws,rp,rs,'s') %建立切比雪夫2型数字滤波器 [z,p,k]=cheb2ap(n,rs); %零极点模型转换到空间状态模型 - 14 - 燕山大学课程设计说明书 [a,b,c,d]=zp2ss(z,p,k); %低通转换到高通 [at1,bt1,ct1,dt1]=lp2bs(a,b,c,d,wc,100*2*pi); %用双线性变换法实现模拟滤波器到数字滤波器的转换 [at2,bt2,ct2,dt2]=bilinear(at1,bt1,ct1,dt1,fs); %空间状态模型转换到传递函数模型 [num,den]=ss2tf(at2,bt2,ct2,dt2) %绘制幅频、相频图(频率响应特性图) figure(1); freqz(num,den,128,fs); grid on; %绘制脉冲响应特性图 figure(2); impz(num,den,128,fs); grid; %滤波检验 figure(3); t=0:0.0005:0.1; x=sin(2*pi*50*t)+sin(2*pi*150*t); y=filter(num,den,x); plot(t,x,':',t,y,'-'); grid; legend('X Signal','Y Signal'); 运行结果: n = 4 wc =1.1017e+003 num = 0.6283 -4.2721 13.3917 -25.1112 30.7305 -25.1112 13.3917 -4.2721 0.6283 den = 1.0000 -6.0196 16.7013 -27.7663 30.1994 -21.9887 10.4750 -2.9919 0.3947 - 15 - 燕山大学课程设计说明书 频率响应 脉冲响应 滤波检验 - 16 - 燕山大学课程设计说明书 四、网络结构图 低通滤波器 高通滤波器 - 17 - 燕山大学课程设计说明书 带通滤波器 带阻滤波器 - 18 - 燕山大学课程设计说明书 五、心得体会 通过这将近一周半的数字信号处理的课程设计,我先在图书馆里查找了相关的书籍,如MATLAB类的编程书籍,各类数据处理类的书籍以及心电信号的书籍等,即丰富了自己的知识范围,又对与自己所学的知识有了更深的了解和认识,同时也对它的应用有了一个大体的认识。这样将会更加激励我好好学习相关的知识,不断的将所学的知识用于实践。于实践中牢牢的掌握它。 在设计的过程中,我也认识到了自己所学知识的不足。这也让我再次认识到知识是无尽的,只有不断的充实自己、完善自己的知识理论体系,才能够更好的胜任自己以后的工作。设计过程中知识的不足也让我更加坚定了终身学习的决心。 在设计的过程中,我也得到了我们设计小组的成员和很多同学的帮组。这也加强了我与其他同学合作的能力。查找资料的过程中我也增强自己学习的能力,这些都将让我在以后的学习、生活和工作中受益匪浅。 总之,对于这样的课程设计活动,我收获了很多东西,也将使我在以后的学习、工作中更加轻松和积极。这也正是参加这次活动的目的和意义。 参考文献 1 薛年喜 MATLAB在数字信号处理中的应用(第二版)清华大学出版社,2008 2 谢平 王娜 林洪彬 信号处理原理及应用 机械工业出版社,2009 3 吴湘淇 肖煕 郝晓莉 信号系统与信号处理的软硬件实现 电子工业出版社 2002年 4 周浩敏.王睿.测试信号处理技术. 北京航空航天大学出版社,2005年 - 19 - 燕山大学课程设计说明书 - 20 - 《数字信号处理》实验内容 用双线性变换法设计 IIR 数字滤波器 一、实验目的: 1、熟悉用双线性变换法设计 IIR 数字滤波器的原理与方法。 2、掌握数字滤波器的计算机仿真方法。 3、熟悉 Batterworth 滤波器设计方法及特点 二、实验原理: (一) 、 IIR 数字滤波器的设计步骤: ① 按照一定规则把给定的滤波器技术指标转换为模拟低通滤波器的技术指标; ② 根据模拟滤波器技术指标设计为响应的模拟低通滤波器; ③ 跟据脉冲响应不变法和双线性不变法把模拟滤波器转换为数字滤波器; ④ 如果要设计的滤波器是高通、带通或带阻滤波器,则首先把它们的技术指标转化为 模拟低通滤波器的技术指标, 设计为数字低通滤波器, 最后通过频率转换的方法来得到所要 的滤波器。 在 MATLAB 中,经典法设计 IIR 数字滤波器主要采用以下步骤: IIR 数字滤波器设计步骤 (二)、用模拟滤波器设计数字滤波器的方法 1、冲激响应不变法: 冲激响应不变法是从时域出发, 要求数字滤波器的冲激响应 h (n ) 对应于模拟滤波器 h (t ) 的 等间隔抽样。 优点:时域逼近良好;保持线性关系。 缺点:频域响应混叠。只适用于限带低通滤波器和带通滤波器 S 平面 Z 平面 2、双线性变换法 优点:克服了频域混叠 缺点:高频时会引起畸变 1)冲激响应不变法 impinvar 格式:[BZ,AZ]= impinvar(B,A,Fs ) 功能:把具有 [B,A]模拟滤波器传递函数模型转换为采样频率为 Fs 的数字滤波器的传递函数 模型 [BZ,AZ], Fs 默认值为 1。 例:一个 4阶的 Butterworth 模拟低通滤波器的系统函数如下: 1 221 ) (2 3 4 ++++= s s s s s H a 试用冲激响应不变法求出 Butterworth 模拟低通数字滤波器的系统函数。 num=1; den=[1,sqrt(5),2,sqrt(2),1]; [num1,den1]=impinvar(num,den) 2)双线性变换法 bilinear 格式一:[Zd,Pd,Kd]= bilinear(Z,P,K,Fs) 功能:把模拟滤波器的零极点模型转换成数字滤波器的零极点模型, Fs 是采样频率 格式二:[numd,dend]= bilinear(num,den,Fs) 功能:把模拟滤波器的传递函数模型转换为数字滤波器的传递函数模型。 例:一个三阶的模拟 Butterworth 模拟低通滤波器的系统函数如下: 1 231 ) (2 3 +++= s s s s H , 试用双线性变换法求出数字 Butterworth 数字低通滤波器的 系统函数。 num=1; den=[1,sqrt(3),sqrt(2),1]; [num1,den1]=bilinear(num,den,1) 1S ~S T T ππ - 将整个 平面压缩变换到 平面一个 的带状区域 3) IIR 数字滤波器的频率变换实现 步骤: ① 按一定的规则将数字滤波器的技术指标转换为模拟低通滤波器的技术指标 ② 根据转换后的技术指标使用滤波器阶数函数,确定滤波器的最小阶数 N 和截止频率 Wc ③ 利用最小阶数 N 产生模拟低通原型 ④ 利用截止频率 Wc 把模拟低通滤波器原型转换为模拟低通、高通、带通、带阻滤波器 ⑤ 利用冲激响应不变法或双线性变换法把模拟滤波器转换为数字滤波器 (三)、数字滤波器的设计 1. 数字滤波器的设计参数 滤波器的 4个重要的通带、阻带参数为: p f :通带截止频率(Hz ) s f :阻带起始频率(Hz ) p R :通带内波动(dB ) ,即通带内所允许的最大衰减; s R :阻带内最小衰减 设采样速率 (即奈奎斯特速率) 为 N f , 将上述参数中的频率参数转化为归一化角频率参数: p ω:通带截止角频率(rad/s) , ) 2//(N p p f f =ω; s ω:阻带起始角频率(rad/s) , ) 2//(N s s f f =ω 通过以上参数就可以进行离散滤波器的设计。 2、巴特沃斯滤波器设计 1) 巴特沃斯滤波器阶数的选择: 在已知设计参数 p ω, s ω, p R , s R 之后,可利用“ buttord ”命令可求出所需要的滤 波器的阶数和 3dB 截止频率,其格式为: [n, Wn]=buttord[Wp, Ws , Rp , Rs],其中 Wp , Ws , Rp , Rs 分别为通带截止频率、 阻带起始频率、通带内波动、阻带内最小衰减。返回值 n 为滤波器的最低阶数, Wn 为 3dB 截止频率。 2) 巴特沃斯滤波器系数计算: 由巴特沃斯滤波器的阶数 n 以及 3dB 截止频率 Wn 可以计算出对应传递函数 H(z)的分 子分母系数, MATLAB 提供的命令如下: (a)巴特沃斯低通滤波器系数计算: [b, a]=butter(n,Wn),其中 b 为 H(z)的分子多项式系数, a 为 H(z)的分母多项式系数 (b)巴特沃斯高通滤波器系数计算:[b, a]=butter(n, Wn , ’ High ’ ) (c)巴特沃斯带通滤波器系数计算:[b, a]=butter(n, [W1, W2]), 其中 [W1, W2]为截止频率, 是 2元向量,需要注意的是该函数返回的是 2*n阶滤波器系数。 (d)巴特沃斯带阻滤波器系数计算:[b, a]=butter(ceil(n/2), [W1, W2], ’ stop ’ ) ,其中 [W1, W2]为截止频率,是 2元向量,需要注意的是该函数返回的也是 2*n阶滤波器系数。 三、巴特沃斯滤波器设计实例: 例题 1:采样速率为 8000Hz , 要求设计一个低通滤波器, p f =2100Hz, s f =2500Hz, p R =3dB, s R =25dB。 用直接设计法 程序如下: fn=8000;%采样频率 fp=2100; %通带截止频率 fs=2500; %阻带起始频率 Rp=3; %通带最大衰减 Rs=25;%阻带最小衰减 Wp=fp/(fn/2);%计算归一化角频率 Ws=fs/(fn/2); [n,Wn]=buttord(Wp,Ws,Rp,Rs);%计算阶数和截止频率 [b,a]=butter(n,Wn);%计算 H(z)分子、分母多项式系数 [H,F]=freqz(b,a,1000,8000);%计算 H(z)的幅频响应 ,freqz(b,a,计算点数 , 采样速率 ) subplot(2,1,1) plot(F,20*log10(abs(H))) %画出幅频特性图 xlabel('Frequency(Hz)'); ylabel('Magnitude(dB)') title('低通滤波器 ') axis([0 4000 -30 3]);grid on pha=angle(H)*180/pi; subplot(2,1,2) plot(F,pha);grid on %画出相频特性图 xlabel('Frequency(Hz)'); ylabel('phase'); -30 -20-100 Frequency(Hz) M a g n i t u d e (d B ) 低 通 滤 波 器 -200 -1000100 200Frequency(Hz) p h a s e 用双线性变换法 wp=2100*2*pi; %利用 ws=2500*2*pi; Rp=3; Rs=25; Fs=8000; Ts=1/Fs; %选择滤波器的最小阶数 [N,Wn]=buttord(wp,ws,Rp,Rs,'s');%创建 butterworth 模拟滤波器 [Z,P,K]=buttap(N); %把滤波器零极点模型转化为传递函数模型 [Bap,Aap]=zp2tf(Z,P,K); %把模拟滤波器原型转换成截至频率为 Wn 的低通滤波器 [b,a]=lp2lp(Bap,Aap,Wn); %用双线性变换法实现模拟滤波器到数字滤波器的转换 [bz,az]=bilinear(b,a,Fs); %绘制频率响应曲线 [H,W]=freqz(bz,az); plot(W*Fs/(2*pi),abs(H)); grid xlabel('频率 /Hz') ylabel('幅度 ') 例题 2:模拟原型直接变换法设计数字滤波器: 已 知 四 阶 归 一 化 低 通 巴 特 沃 斯 模 拟 滤 波 器 系 统 函 数 为 ()1 6131. 24142. 36131. 21 234++++= s s s s s H a , 编写 MATLAB 程序实现从 ()s H a 设计 3dB 截止频率为 2π=c w ,设采样周期为 T=1,的四阶低通巴特沃斯数字滤波器。 程序如下:步骤一:将设计内容题所给归一化巴特沃斯低通滤波器以 3dB 截止频率为 2π=c w 进行去归一化。 0000 . 169048, 206568. 132262. 50000 . 16) (2 34++++= s s s s s H a 步骤二:用双线性变化法将低通模拟滤波器 ) (s H a 变换为低通数字滤波器 ) (z H 4 21210177. 04860. 010940 . 03759. 05639. 03759. 00940. 0) (-----++++++=z z z z z z H 设计程序如下: clear; T=1; fs=1/T; N=4; wc=pi/2; omegach=2*tan(wc/2)/T;%模拟滤波器的截止频率 M=1; N=[1,2.6131,3.4142,2.6131,1]; [h,w]=freqs(M,N,512); %模拟滤波器的幅频响应 subplot(2,1,1); plot(w,20*log10(abs(h))); axis([0,10,-90,0]),grid on; xlabel('Hz');ylabel('幅度 '); title('归一化模拟低通滤波器 '); [Ms,Ns]=lp2lp(M,N,omegach); %对低通滤波器进行频率变换 [hs,ws]=freqs(Ms,Ns,512); %模拟滤波器的幅频响应 subplot(2,1,2);plot(ws,20*log10(abs(hs))); grid; axis([0,10,-90,0]); xlabel('Hz');ylabel('幅度 '); title('去归一化模拟低通滤波器 '); [Mz,Nz]=bilinear(Ms,Ns,1/T); %对模拟滤波器双线性变换 [h1,w1]=freqz(Mz,Nz); %数字滤波器的幅频响应 figure plot(w1/pi,20*log10(abs(h1))); grid; xlabel('ω/π');ylabel('幅度 (dB)'); title('数字低通滤波器 '); axis([0,1,-160,0]) 1 2 3 4 5678 9 10 Hz 幅 度 归 一 化 模 拟 低 通 滤 波 器 1 2 3 4 567 8 9 10 Hz 幅 度 去 归 一 化 模 拟 低 通 滤 波 器 ω/π 幅 度 (d B ) 数 字 低 通 滤 波 器 四、实验内容: 1、采样速率为 10000Hz ,要求设计一个巴特沃斯带阻滤波器, p f =[1000Hz, 1500Hz], s f =[1200Hz, 1300Hz], p R =3dB, s R =30dB。 提示:[b,a]=butter(N,Wc,'stop') 2、 采样速率为 10000Hz , 要求设计一个带通滤波器, p f =[1000Hz, 1500Hz], s f =[600Hz, 1900Hz], p R =3dB, s R =20dB。 3、 已 知 四 阶 归 一 化 低 通 巴 特 沃 斯 模 拟 滤 波 器 系 统 函 数 为 1 221 ) (2 3 4 ++++= s s s s s H a , 编写 MATLAB 程序实现从 ()s H a 设计 3dB 截止频率为 4c w π=的四阶高通巴特沃斯数字滤波器。 4、 设计低通滤波器, 把输入信号 ) 800(c ) 400cos() 200cos() (t os t t t x πππ++=中的三个信 号分离出来。 要求:画出滤波前后信号的波形及频谱及低通滤波器的幅频响应。 提示:[b,a]=butter(n,Wn);%计算 H(z)分子、分母多项式系数 y=filter(b,a,x);%对输入的信号进行滤波 五、思考题: 用双线性变换法设计数字滤波器过程中,变换公式 ) 11(21 1 --+-=z z T s 中 T 的取值对设计结果 有无影响?为什么? 程序如下: 五、实验结果: 1、程序如下: fn=10000;%采样频率 fp=[1000,1500]; %通带截止频率 fs=[600,1900]; %阻带起始频率 Rp=3; %通带最大衰减 Rs=20;%阻带最小衰减 Wp=fp/(fn/2);%计算归一化角频率 Ws=fs/(fn/2); [n,Wn]=buttord(Wp,Ws,Rp,Rs);%计算阶数和截止频率 [b,a]=butter(n,Wn,'stop');%计算 H(z)分子、分母多项式系数 [H,F]=freqz(b,a,1000,8000);%计算 H(z)的幅频响应 ,freqz(b,a,计算点数 , 采样速率 ) subplot(2,1,1) plot(F,20*log10(abs(H))) %画出幅频特性图 xlabel('Frequency(Hz)'); ylabel('Magnitude(dB)') title('带阻滤波器 ') axis([0 4000 -30 3]);grid on pha=angle(H)*180/pi; subplot(2,1,2) plot(F,pha);grid on %画出相频特性图 xlabel('Frequency(Hz)'); ylabel('phase'); 2、程序如下: fn=10000;%采样频率 fp=[1000,1500]; %通带截止频率 fs=[600,1900]; %阻带起始频率 Rp=3; %通带最大衰减 Rs=20;%阻带最小衰减 Wp=fp/(fn/2);%计算归一化角频率 Ws=fs/(fn/2); [n,Wn]=buttord(Wp,Ws,Rp,Rs);%计算阶数和截止频率 [b,a]=butter(n,Wn);%计算 H(z)分子、分母多项式系数 [H,F]=freqz(b,a,1000,8000);%计算 H(z)的幅频响应 ,freqz(b,a,计算点数 , 采样速率 ) subplot(2,1,1) plot(F,20*log10(abs(H))) %画出幅频特性图 xlabel('Frequency(Hz)'); ylabel('Magnitude(dB)') 11 title('带通滤波器 ') axis([0 4000 -30 3]);grid on pha=angle(H)*180/pi; subplot(2,1,2) plot(F,pha);grid on %画出相频特性图 xlabel('Frequency(Hz)'); ylabel('phase'); 3、程序如下: clear; T=1; fs=1/T; N=4; wc=pi/4; omegach=2*tan(wc/2)/T;%模拟滤波器的截止频率 M=1; N=[1,sqrt(5),2,sqrt(2),1]; [h,w]=freqs(M,N,512); %模拟滤波器的幅频响应 subplot(2,1,1); plot(w,20*log10(abs(h))); axis([0,10,-90,0]),grid on; xlabel('Hz');ylabel('幅度 '); title('归一化模拟高通滤波器 '); [Ms,Ns]=lp2hp(M,N,omegach); %对低通滤波器进行频率变换 [hs,ws]=freqs(Ms,Ns,512); %模拟滤波器的幅频响应 subplot(2,1,2);plot(ws,20*log10(abs(hs))); grid; axis([0,10,-90,0]); xlabel('Hz');ylabel('幅度 '); title('去归一化模拟高通滤波器 '); [Mz,Nz]=bilinear(Ms,Ns,1/T); %对模拟滤波器双线性变换 [h1,w1]=freqz(Mz,Nz); %数字滤波器的幅频响应 figure plot(w1/pi,20*log10(abs(h1))); grid; xlabel('ω/π');ylabel('幅度 (dB)'); title('数字高通滤波器 '); axis([0,1,-160,0]) 12 六、实验结论: 通过本次试验, 熟悉用双线性变换法设计 IIR 数字滤波器的原理与方法。 掌握数字滤波 器的计算机仿真方法。熟悉 Batterworth 滤波器设计方法及特点,实验过程中遇到问题,不 能顺利进行。在老师的指导下,与同学合作,顺利完成实验。通过本次试验,加深了对课本 理论知识的理解。 法的价值冲突及处理原则 法律的基本价值包括自由、正义、秩序等诸多方面。法律的各个基本价值之间可能会出 现相互间的冲突。在协调上述冲突的过程中,法律能够发挥独特的作用。解决法的基本价值 之间的冲突包括如下三个主要原则: 1、价值位阶原则; 2、个案平衡原则; 3、比例原则。 法的价值,是指法这个客体对满足个人、群体、社会、国家需要的积极意义。自由、正 义、秩序是法的基本价值。 1、自由 自由是法的最高价值,其和法的关系是: (1)自由是法的目的 法以自由为目的,体现在: 第一,从法的权利和法的义务来看,法的权利是为自由而设定的,而法的义务也是为自 由而设定的。法的权利的设定与自由相抵触就必然违反法的初衷。法的义务的设定与自由相 抵触,法的权利就成为乌有,自由也就没有法的根据和保障。 第二,从法的授权、禁止和义务的规定来看,法上的授权固然是对自由的确认,法上的 禁止和义务也是为确保自由而设立。 第三,从法的制定和法的实施来看,法的制定要以自由为出发点和归宿,以自由为核心; 法的实施必须以自由为宗旨,法的保护或打击、奖励或制裁都应以自由为依归。 西塞罗:“为了得到自由,我们才是法律的臣仆。” 洛克:“不管会引起人们怎样的误解,法律的目的不是废除或者限制自由,而是保护和 扩大自由。这是因为在一切能够接受法律支配的人类的状态中,哪里没有法律,哪里就没有 自由。这是因为自由意味着不受他人的束缚和强暴,而哪里没有法律,哪里就不能有这种自 由。” (2)法确定自由的范围,对自由进行限制 自由必须受到法的限制,法限制自由的目的并不在于限制自由本身,而在于实现自由和 保障自由,在于扩大自由并为自由的享有提供条件和手段。 第一,法对自由的限制必须以必要为原则。这意味着法对自由的各种限制和限制程度, 相对于作为目的的自由来说,应当是必要的。法对自由的限制后果相对于不限制来说应是更 有效益而必要的。也就是说,对自由的限制也有个效益问题,即以最小的自由限制获取最大 的自由效益。 第二,法对自由的限制要以法为准绳。即自由的法律限制必须以法律规定作为表现形式, 而不能以非法律的政策规定、道德规定、纪律规定等作为表现形式、法在自由的限制上不应 是含糊的、模棱两可的,而应是清楚的、具体的。并且法对自由的限制应当是公开的,稳定 的,不能频繁变化而使人不可捉摸。 第三,法对自由的限制只是自由所受限制的一个方面。自由还要受社会物质生活条件、 社会精神生活条件的限制,还可能受到自由本身的限制。自由之间存在着矛盾,一种自由可 能正是另一种自由的限制。但是,人们又不能决然地抛弃某种自由,因而自由之间就必须有 妥协与退让,一种自由应因另一种相对应或对立的自由而受到限制。 洛克:自由正如人们告诉我们的,并非人人爱怎样就可怎样的那种自由(当其他任何人 的一时高兴可以支配一个人的时候,谁能自由呢?),而是在他所受约束的法律许可范围内, 随其所欲地处置或安排他的人身、行动、财富和他的全部的财产的那种自由,在这个范围内 他不受另一个人的任意意志的支配,而是可以自由地遵循他自己的意志。 亚里士多德:公民们都应遵守一邦所定的生活规则,让各人的行为有所约束,法律不应 被当作(和自由相对的)奴役,法律毋宁是拯救。 卢梭:人生而自由,但无往不在枷锁中。 2、正义 正义是随着时代的变化而变化的,没有永恒的正义。亚里士多德将正义分为分配的正义 和矫正的正义。分配的正义就是对不同的人给予不同的对待,对于相同的人给予相同的对待, 根据人的功绩、出身等的不同来分配财富、荣誉。矫正的正义,是指不管什么人,只要损害 了别人的财产、权利,都要给予同等的补偿,适用等价交换原则,是一种补偿性的公平或曰 事后公平。 正义包括实质正义和形式正义、程序正义和实体正义。形式正义,着重于程序公正。只 要所适用的程序规则是公正的,具体案件的当事人之间是否实现了正义,则非所问。实质正 义,则不满足于程序的公正,而是着重于在具体的案件的当事人之间实现正义。按照现代法 律思想,强调形式正义与实质正义的统一,形式正义只是手段,而实质正义才是目的,形式 正义须服从于实质正义,并最终保障实质正义的实现。 实体正义是指立法在确定人们实体权利义务时所要遵循的价值标准,如平等、公平地对 社会资源进行权威分配。程序正义则是指法律适用方面的正义,其有二层含义:一是立法者 应制定出符合当时社会正义观念所要求的程序法;二是执法者严格按照公正的程序法的要求 以适用法律。换言之,人们严格按照程序法的规定行事,而人们所遵从的程序法本身是制定 得很好的法律。 就程序正义和实体正义二者的关系来讲,程序正义以实体正义为前提,并为实体正义服 务,程序正义的目的是要追求实体正义、实现实体正义。实体正义同样离不开程序正义,如 果抛开程序正义去谈实体正义,则只能是空谈,实体正义将无从实现。程序正义本质上是一 种诉讼过程的正义,它体现了法律适用的“过程价值”,实体正义是一个客观结果的正义,它体现了法律适用的“结果价值”。 3、秩序 秩序也是法的最基本的价值之一。法的秩序价值和其他价值之间,前者是后者的前提和 基础,后者是前者的目的和发展。 秩序与社会生活中存在一定限制、禁止、控制有关。秩序表明社会生活中存在着一种相 互性——每个人的行为不是偶然和杂乱的,而是在相互回答或补充他人行为的。秩序在社会 生活中捕捉预言的因素和重复的因素——人们只有在他们知道彼此情况下,才能在社会中活 动。秩序能够表示社会生活各组成部分的某种一致性和不矛盾性。秩序表示社会生活的某种 稳定性,即在某种程度上长期保持这种形式。 作为法律价值,秩序是低层次的法律价值,即是工具性的法律价值、非实质性的法律价 值,本身没有目标性内容。秩序是其他法律价值的基础,为诸如安全、自由、平等、正义等 法律价值的存在和实现提供条件。如安全必定存在于一定的秩序之中,一个人的自由和他人 的自由唯有在秩序中才获得其合理的界线和实现的条件,人们之间的平等关系也唯有秩序的 支持才能获得成立。 以上所言自由、秩序、正义等,都可以说是法的最基本的价值,而实际上除此之外,尚 有效率等其他价值形式存在。 4、效率 效率,也称“效益”,作为经济学上的概念,表达的是投入与产出、成本与收益的关系, 就是以最少的资源消耗获得最多的效果。 效率的价值目标可以成为正义的价值目标的补充。传统的法律观念将正义作为法律的最 高实质性价值,其他的实质性法律价值可以归结在正义的旗帜下。而当代社会的法律不仅仅 要追求正义,而且还要以效率作为正义的补充。这是因为: (1)当代社会的许多经济活动不能用正义与否来衡量,而这些活动却关系到资源的优 化利用和配置,在这种情况下,只能按照效率的价值目标进行法律安排。 (2)某些活动既可用正义作为评价标准,也可用效率作为评价标准,其中一些活动的 正义与否,甚至需要效率作为度量。前者如诉讼程序中的诉讼保全、先行给付的措施,后者 如对浪费资源行为的评价。因此,法律对许多权利的安排或手段方式的选择,有很多是以正 义和效率的双重目标为依据的。 (3)从整体上看,正义往往更适合于作为法律制度确定与实施的定性依据,而定量依 据则有赖于效率目标,这也体现了正义与效率的互补性。 5、价值冲突的解决 现在我们要面对的问题就是,法的各种价值之间有时会发生矛盾,从而导致价值之间的 相互抵牾。 (1)自由与秩序的矛盾 自由与秩序就会形成矛盾,自由更偏向个人权利,秩序则更强调国家权力。这反映了国 家在运用法律权利义务的形式分配社会资源时,其侧重点直接影响到公民自由的实现和社会 秩序的形成。自由和秩序的冲突深刻地揭示出法律权利和法律义务关系的本质。 (2)正义与效率的矛盾 正义与效率也存在一种紧张关系。注重正义在一定程度上会影响效率。人们在讨论正义 与效率的关系时,一般都是从结果平等出发的,着眼于社会伦理与经济增长的关系。而实际 上,经济增长与正义有两个层次的关系。从实质正义的角度,社会财富应该平均分配或至少 兼顾弱者的需要,以维护事实上的平等;从形式正义即起点公平、条件公平的角度,社会关 系主体应有公平的机会与条件增加自身财富。 (3)自由和秩序与正义和效率的矛盾 从更广泛的角度,自由和秩序与正义和效率也存在一定的冲突。人类社会的生存具有两 大目标:稳定和发展。这是两项既相矛盾又相统一的目标。一方面,稳定是发展的前提,发 展是稳定的目的,另一方面,在许多时候发展又是稳定的前提,而稳定便成为发展的结果。 稳定目标和发展目标具有不同的价值取向:稳定目标的价值取向是自由和秩序,发展目标的 价值取向是正义和效率。 法律价值的冲突表明了社会生活的复杂性。人们通过法律进行社会关系的调整,并不意 味着所有情况下法律价值都是同样的,在优先法律价值方面实际上是存在差异的。 处理法的价值冲突的主要原则: (1)价值位阶原则 这是指在不同位阶的法的价值发生冲突时,在先的价值优于在后的价值。就法的基本价 值而言,主要是以上所说的自由、正义与秩序,其他则属于基本价值以外的一般价值(如: 效率、利益等)。但即使基本价值,其位阶顺序也不是并列的。一般而言,自由代表了人的 最本质的人性需要,它是法的价值的顶端;正义是自由的价值外化,它成为自由之下制约其 他价值的法律标准;而秩序则表现为实现自由、正义的社会状态,必须受自由、正义标准的 约束。因而,在以上价值之间发生冲突时,可以按照位阶顺序来予以确定何者应优先适用。 (2)个案平衡原则 这是指处于同一位阶上的法的价值之间发生冲突时,必须综合考虑主体之间的特定情 形、需求和利益,以使得个案的解决能够适当兼顾双方的利益。就个案平衡原则来说,公共 利益并不一定高于个人利益,而是结合具体情形来寻找两者之间的平衡点。 (3)比例原则 价值冲突中的“比例原则”,是指“为保护某种较为优越的法价值须侵及一种法益时, 不得逾越此目的所必要的程度。即在因某种价值牺牲另外一种价值时,应将损害的程度降至 最低。 转载请注明出处范文大全网 » 采用线性探测方法解决冲突范文三:数字信号处理课程设计-用双线性变换法设计IIR滤波器
范文四:数字信号处理--用双线性变换法设计IIR 数字滤波器
范文五:法的价值冲突及处理原则