您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > matlab【滤波器】程序
matlab滤波器程序wc=(400/1000)*pi;%求截止频率w1=boxcar(81);%窗函数w2=triang(81);w3=hamming(81);w4=hanning(81);w5=bartlett(81);w6=blackman(81);w7=chebwin(81,30);w8=kaiser(81,7.856);n=1:1:81;hd=sin(wc*(n-41))./(pi*(n-41));%求h(d)hd(41)=wc/pi;h1=hd.*w1';%加窗h2=hd.*w2';h3=hd.*w3';h4=hd.*w4';h5=hd.*w5';h6=hd.*w6';h7=hd.*w7';h8=hd.*w8';[mag1,rad]=freqz(h1);%求幅频特性曲线[mag2,rad]=freqz(h2);[mag3,rad]=freqz(h3);[mag4,rad]=freqz(h4);[mag5,rad]=freqz(h5);[mag6,rad]=freqz(h6);[mag7,rad]=freqz(h7);[mag8,rad]=freqz(h8);figure(1);%画幅频特性曲线plot(rad,20*log10(abs(mag1)));xlabel('NormalizedFrequency(rad)');ylabel('NormaliaedMagnitude(dB)');axis([0,3,-80,0]);title('利用矩形窗设计的数字滤波器');gridon;figure(2);plot(rad,20*log10(abs(mag2)));xlabel('NormalizedFrequency(rad)');ylabel('NormaliaedMagnitude(dB)');axis([0,3,-80,0]);title('利用三角窗设计的数字滤波器');gridon;figure(3);plot(rad,20*log10(abs(mag3)));xlabel('NormalizedFrequency(rad)');ylabel('NormaliaedMagnitude(dB)');axis([0,3,-80,0]);title('利用海明设计的数字滤波器');gridon;figure(4);plot(rad,20*log10(abs(mag4)));xlabel('NormalizedFrequency(rad)');ylabel('NormaliaedMagnitude(dB)');axis([0,3,-80,0]);title('利用汉宁窗设计的数字滤波器');gridon;figure(5);plot(rad,20*log10(abs(mag5)));xlabel('NormalizedFrequency(rad)');ylabel('NormaliaedMagnitude(dB)');axis([0,3,-80,0]);title('利用巴特里特窗设计的数字滤波器');gridon;figure(6);plot(rad,20*log10(abs(mag6)));xlabel('NormalizedFrequency(rad)');ylabel('NormaliaedMagnitude(dB)');axis([0,3,-100,0]);title('利用布拉克曼窗设计的数字滤波器');gridon;figure(7);plot(rad,20*log10(abs(mag7)));xlabel('NormalizedFrequency(rad)');ylabel('NormaliaedMagnitude(dB)');axis([0,3,-100,0]);title('利用切比雪夫窗设计的数字滤波器');gridon;figure(8);plot(rad,20*log10(abs(mag8)));xlabel('NormalizedFrequency(rad)');ylabel('NormaliaedMagnitude(dB)');axis([0,3,-100,0]);title('利用凯塞窗设计的数字滤波器');gridon;MATLAB参考程序和仿真内容%*******************************************************************%%mode:1--巴特沃斯低通;2--巴特沃斯高通;3--巴特沃斯带通;4--巴特沃斯带阻%5--契比雪夫低通;6--契比雪夫高通;7--契比雪夫带通;8--契比雪夫带阻%fp1,fp2:通带截止频率,当高通或低通时只有fp1有效%fs1,fs2:阻带截止频率,当高通或低通时只有fs1有效%rp:通带波纹系数%as:阻带衰减系数%sample:采样率%h:返回设计好的滤波器系数%*******************************************************************%function[b,a]=iirfilt(mode,fp1,fp2,fs1,fs2,rp,as,sample)wp1=2*fp1/sample;wp2=2*fp2/sample;ws1=2*fs1/sample;ws2=2*fs2/sample;%得到巴特沃斯滤波器的最小阶数N和3bd频率wnifmode3[N,wn]=buttord(wp1,ws1,rp,as);elseifmode5[N,wn]=buttord([wp1wp2],[ws1ws2],rp,as);%得到契比雪夫滤波器的最小阶数N和3bd频率wnelseifmode7[N,wn]=cheb1ord(wp1,ws1,rp,as);else[N,wn]=cheblord([wp1wp2],[ws1ws2],rp,as);end%得到滤波器系数的分子b和分母aifmode==1[b,a]=butter(N,wn);endifmode==2[b,a]=butter(N,wn,/high/);endifmode==3[b,a]=butter(N,wn);endifmode==4[b,a]=butter(N,wn,/stop/);endifmode==5[b,a]=cheby1(N,rp,wn);endifmode==6[b,a]=cheby1(N,rp,wn,/high/);endifmode==7[b,a]=cheby1(N,rp,wn);endifmode==8[b,a]=cheby1(N,rp,wn,/stop/);endset(gcf,/menubar/,menubar);freq_response=freqz(b,a);magnitude=20*log10(abs(freq_response));m=0:511;f=m*sample/(2*511);subplot(3,1,1);plot(f,magnitude);grid;%幅频特性axis([0sample/21.1*min(magnitude)1.1*max(magnitude)]);ylabel('Magnitude');xlabel('Frequency--');phase=angle(freq_response);subplot(3,1,2);plot(f,phase);grid;%相频特性axis([0sample/21.1*min(phase)1.1*max(phase)]);ylabel('Phase');xlabel('Frequency--');h=impz(b,a,32);%32点的单位函数响应t=1:32;subplot(3,1,3);stem(t,h);grid;axis([0321.2*min(h)1.1*max(h)]);ylabel('h(n)');xlabel('n--');基于MATLAB信号处理工具箱的数字滤波器设计与仿真摘要:传统的数字滤波器的设计过程复杂,计算工作量大,滤波特性调整困难,影响了它的应用。本文介绍了一种利用matlab信号处理工具箱(signalprocessingtoolbox)快速有效的设计由软件组成的常规数字滤波器的设计方法。给出了使用matlab语言进行程序设计和利用信号处理工具箱的fdatool工具进行界面设计的详细步骤。利用matlab设计滤波器,可以随时对比设计要求和滤波器特性调整参数,直观简便,极大的减轻了工作量,有利于滤波器设计的最优化。本文还介绍了如何利用matlab环境下的仿真软件simulink对所设计的滤波器进行模拟仿真。关键词:数字滤波器matlabfiriir引言:在电力系统微机保护和二次控制中,很多信号的处理与分析都是基于对正弦基波和某些整次谐波的分析,而系统电压电流信号(尤其是故障瞬变过程)中混有各种复杂成分,所以滤波器一直是电力系统二次装置的关键部件【1】。目前微机保护和二次信号处理软件主要采用数字滤波器。传统的数字滤波器设计使用繁琐的公式计算,改变参数后需要重新计算,在设计滤波器尤其是高阶滤波器时工作量很大。利用matlab信号处理工具箱(signalprocessingtoolbox)可以快速有效的实现数字滤波器的设计与仿真。1数字滤波器及传统设计方法数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。数字滤波器有多种分类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(iir)滤波器和有限长冲激响应(fir)滤波器。iir数字滤波器具有无限宽的冲激响应,与模拟滤波器相匹配。所以iir滤波器的设计可以采取在模拟滤波器设计的基础上进一步变换的方法。fir数字滤波器的单位脉冲响应是有限长序列。它的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数问题,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。在对滤波器实际设计时,整个过程的运算量是很大的。例如利用窗函数法【2】设计m阶fir低通滤波器时,首先要根据(1)式计算出理想低通滤波器的单位冲激响应序列,然后根据(2)式计算出m个滤波器系数。当滤波器阶数比较高时,计算量比较大,设计过程中改变参数或滤波器类型时都要重新计算。(1)(2)设计完成后对已设计的滤波器的频率响应要进行校核,要得到幅频相频响应特性,运算量也是很大的。我们平时所要设计的数字滤波器,阶数和类型并不一定是完全给定的,很多时候都是要根据设计要求和滤波效果不断的调整,以达到设计的最优化。在这种情况下,滤波器的设计就要进行大量复杂的运算,单纯的靠公式计算和编制简单的程序很难在短时间内完成设计。利用matlab强大的计算功能进行计算机辅助设计,可以快速有效的设计数字滤波器,大大的简化了计算量,直观简便。2数字滤波器的matlab设计2.1fdatool界面设计2.1.1fdatool的介绍fdatool(filterdesign&analysistool)是matlab信号处理工具箱里专用的滤波器设计分析工具,matlab6.0以上的版本还专门增加了滤波器设计工具箱(filterdesigntoolbox)。fdatool可以设计几乎所有的基本的常规滤波器,包括fir和iir的各种设计方法。它操作简单,方便灵活。fdatool界面总共分两大部分,一部分是designfilter,在界面的下半部,用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。designfilter部分主要分为:filtertype(滤波器类型)选项,包括lowpass(低通)、highpass(高通)、bandpass(带通)、bandstop(带阻)和特殊的fir滤波器。designmethod(设计方法)选项,包括iir滤波器的butterworth(巴特沃思)法、chebyshevtypei(切比雪夫
本文标题:matlab【滤波器】程序
链接地址:https://www.777doc.com/doc-2886927 .html