欢迎来到我的范文网!

matlab,fir,带通

教学设计 时间:2020-09-28

【www.myl5520.com--教学设计】

MATLAB实现数字FIR的高通_和带通等滤波器的源程序[1]
篇一:matlab,fir,带通

利用汉宁窗设计Ⅰ型数字高通滤波器

clear all;

Wp=0.6*pi;

Ws=0.4*pi;

tr_width=Wp-Ws; %过渡带宽度

N=ceil(6.2*pi/tr_width) %滤波器长度

n=0:1:N-1;

Wc=(Ws+Wp)/2; %理想低通滤波器的截止频率

hd=ideal_hp1(Wc,N); %理想低通滤波器的单位冲激响应

w_han=(hanning(N))'; %汉宁窗

h=hd.*w_han; %截取得到实际的单位脉冲响应

[db,mag,pha,w]=freqz_m2(h,[1]); %计算实际滤波器的幅度响应

delta_w=2*pi/1000;

Ap=-(min(db(Wp/delta_w+1:1:501))) %实际通带纹波

As=-round(max(db(1:1:Ws/delta_w+1))) %实际阻带纹波

subplot(221)

stem(n,hd)

title('理想单位脉冲响应hd(n)')

subplot(222)

stem(n,w_han)

title('汉宁窗w(n)')

subplot(223)

stem(n,h)

title('实际单位脉冲响应hd(n)')

subplot(224)

plot(w/pi,db)

title('幅度响应(dB)')

axis([0,1,-100,10])

clear all;

Wp=0.6*pi;

Ws=0.4*pi;

tr_width=Wp-Ws; %过渡带宽度

N=ceil(6.2*pi/tr_width) %滤波器长度

n=0:1:N-1;

Wc=(Ws+Wp)/2; %理想低通滤波器的截止频率

hd=ideal_hp1(Wc,N); %理想低通滤波器的单位冲激响应

w_han=(hanning(N))'; %汉宁窗

h=hd.*w_han; %截取得到实际的单位脉冲响应

[db,mag,pha,w]=freqz_m2(h,[1]); %计算实际滤波器的幅度响应

delta_w=2*pi/1000;

Ap=-(min(db(Wp/delta_w+1:1:501))) %实际通带纹波

As=-round(max(db(1:1:Ws/delta_w+1))) %实际阻带纹波

subplot(221)

stem(n,hd)

title('理想单位脉冲响应hd(n)')

subplot(222)

stem(n,w_han)

title('汉宁窗w(n)')

subplot(223)

stem(n,h)

title('实际单位脉冲响应hd(n)')

subplot(224)

plot(w/pi,db)

title('幅度响应(dB)')

axis([0,1,-100,10])

基于切比雪夫一致逼近法设计FIR数字低通滤波器

clear all;

f=[0 0.6 0.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);

subplot(211)

stem(b,'.');

grid;

title('切比雪夫逼近滤波器的抽样值')

subplot(212)

plot(w,h);

grid;

title('滤波器幅频特性(dB)')

利用汉宁窗设计Ⅰ型数字带阻滤波器

clear all;

Wpl=0.2*pi;

Wph=0.8*pi;

Wsl=0.4*pi;

Wsh=0.6*pi;

tr_width=min((Wsl-Wpl),(Wph-Wsh)); %过渡带宽度

N=ceil(6.2*pi/tr_width) %滤波器长度

n=0:1:N-1;

Wcl=(Wsl+Wpl)/2; %理想低通滤波器的截止频率

Wch=(Wsh+Wph)/2;

hd=ideal_bs(Wcl,Wch,N); %理想低通滤波器的单位冲激响应

w_hann=(hanning(N))'; %汉宁窗

h=hd.*w_hann; %截取得到实际的单位脉冲响应

[db,mag,pha,w]=freqz_m2(h,[1]); %计算实际滤波器的幅度响应 delta_w=2*pi/1000;

Ap=-(min(db(1:1:Wpl/delta_w+1))) %实际通带纹波

As=-round(max(db(Wsl/delta_w+1:1:Wsh/delta_w+1))) %实际阻带纹波

subplot(221)

stem(n,hd)

title('理想单位脉冲响应hd(n)')

subplot(222)

stem(n,w_hann)

title('汉宁窗w(n)')

subplot(223)

stem(n,h)

title('实际单位脉冲响应hd(n)')

subplot(224)

plot(w/pi,db)

title('幅度响应(dB)')

axis([0,1,-100,10])

利用三角窗设计Ⅲ型数字带通滤波器

clear all;

Wpl=0.4*pi;

Wph=0.6*pi;

Wsl=0.2*pi;

Wsh=0.8*pi;

tr_width=min((Wpl-Wsl),(Wsh-Wph)); %

N=ceil(6.1*pi/tr_width) %

n=0:1:N-1;

Wcl=(Wsl+Wpl)/2; %

频率

Wch=(Wsh+Wph)/2;

hd=ideal_bp2(Wcl,Wch,N); %

的单位冲激响应

w_tri=(triang(N))'; %

h=hd.*w_tri; %

位脉冲响应

[db,mag,pha,w]=freqz_m2(h,[1]); %

的幅度响应

delta_w=2*pi/1000;

Ap=-(min(db(Wpl/delta_w+1:1:Wph/delta_w+1))) %

As=-round(max(db(Wsh/delta_w+1:1:501))) %

subplot(221) 过渡带宽度 滤波器长度 理想低通滤波器的截止理想低通滤波器三角窗 截取得到实际的单计算实际滤波器实际通带纹波 实际阻带纹波

stem(n,hd)

title('理想单位脉冲响应hd(n)')

subplot(222)

stem(n,w_tri)

title('三角窗w(n)')

subplot(223)matlab,fir,带通。

stem(n,h)

title('实际单位脉冲响应hd(n)')

subplot(224)

plot(w/pi,db)

title('幅度响应(dB)')

axis([0,1,-100,10])

利用布拉克曼窗设计Ⅱ型数字带通滤波器

clear all;

Wpl=0.4*pi;

Wph=0.6*pi;matlab,fir,带通。

Wsl=0.2*pi;

Wsh=0.8*pi;

tr_width=min((Wpl-Wsl),(Wsh-Wph)); %过渡带宽度 N=ceil(11*pi/tr_width)+1 %滤波器长度 n=0:1:N-1;

Wcl=(Wsl+Wpl)/2; %理想低通滤波器的截止频率

Wch=(Wsh+Wph)/2;

hd=ideal_bp1(Wcl,Wch,N); %理想低通滤波器的单位冲激响应

w_bman=(blackman(N))'; %布拉克曼窗

h=hd.*w_bman; %截取得到实际的单位脉冲响应

[db,mag,pha,w]=freqz_m2(h,[1]); %计算实际滤波器的幅度响应

delta_w=2*pi/1000;

Ap=-(min(db(Wpl/delta_w+1:1:Wph/delta_w+1))) %实际通带纹波 As=-round(max(db(Wsh/delta_w+1:1:501))) %实际阻带纹波 subplot(221)

stem(n,hd)

title('理想单位脉冲响应hd(n)')

subplot(222)

stem(n,w_bman)

title('布拉克曼窗w(n)')

subplot(223)

stem(n,h)

title('实际单位脉冲响应hd(n)')

subplot(224)

plot(w/pi,db)

title('幅度响应(dB)')

axis([0,1,-100,10])

利用海明窗设计Ⅱ型数字低通滤波器 clear all;

Wp=0.2*pi;

Ws=0.4*pi;

tr_width=Ws-Wp; %过渡带宽度

N=ceil(6.6*pi/tr_width)+1 %滤波器长度

n=0:1:N-1;

Wc=(Ws+Wp)/2; %理想低通滤波器的截止频率

hd=ideal_lp1(Wc,N); %理想低通滤波器的单位冲激响应 w_ham=(hamming(N))'; %海明窗

h=hd.*w_ham; %截取得到实际的单位脉冲响应

[db,mag,pha,w]=freqz_m2(h,[1]); %计算实际滤波器的幅度响应 delta_w=2*pi/1000;

Ap=-(min(db(1:1:Wp/delta_w+1))) %实际通带纹波

As=-round(max(db(Ws/delta_w+1:1:501))) %实际阻带纹波 subplot(221)

stem(n,hd)

title('理想单位脉冲响应hd(n)')

subplot(222)

stem(n,w_ham)

title('海明窗w(n)')

subplot(223)

stem(n,h)

title('实际单位脉冲响应hd(n)')

subplot(224)

plot(w/pi,db)

title('幅度响应(dB)')

axis([0,1,-100,10])

%--------------------------------------------------------

function[db,mag,pha,w]=freqz_m2(b,a)

%滤波器的幅值响应(相对、绝对)、相位响应

%db:相对幅值响应

%mag:绝对幅值响应

%pha: 相位响应

%w 采样频率;

%b 系统函数H(z)的分子项(对FIR,b=h)

%a 系统函数H(z)的分母项(对FIR,a=1)

Matlab结合窗函数法设计数字带通FIR滤波器
篇二:matlab,fir,带通

课程设计任务书

学生姓名: 专业班级: 通信工程

指导教师: 工作单位: 信息工程学院

题 目:利用Matlab仿真软件系统结合窗函数法设计一个数字带通FIR滤波器

初始条件: 1.《数字信号处理》基本理论知识

2.《信号与系统》基本理论知识

3.MATLAB编程基础知识

4.装有MATLAB的PC机

要求完成的主要任务:

利用MATLAB仿真软件系统结合窗函数法设计一个数字带通FIR滤波器

时间安排:

第20周理论设计、实验室安装调试,地点: 鉴主15楼通信实验室一

指导教师签名: 年 月 日

系主任(或责任教师)签名: 年 月 日

目录

目录 .........................................................................

中文摘要 .................................................................... 1

Abstract .................................................................... 2

1 MATLAB的概况 ............................................................. 3

2 MATLAB结合窗函数设计法原理 ............................................... 4

3 各类窗函数简介 ............................................................ 7

3.1 基本窗函数 ......................................................................................................................... 7

3.1.1 矩形窗函数 ............................................................................................................... 7

3.1.2三角窗 ........................................................................................................................ 7

3.2 广义余弦窗 ......................................................................................................................... 8

3.2.1汉宁窗(升余弦窗) ................................................................................................... 9

4 方案设计与论证 ........................................................... 10

4.1 程序设计法 ......................................................................................................................... 11

5 窗函数仿真结果分析 ....................................................... 13

5.1 汉宁窗函数仿真结果 ..........................................................................................................13

5.2汉宁窗函数仿真结果分析 .....................................................................................................15

6总结与体会 ............................................................... 16

7参考文献 ................................................................. 17

中文摘要

现代图像、语声、数据通信对线性相位的要求是普遍的。正是此原因,使得具有线性相位的FIR数字滤波器得到大力发展和广泛应用。

在实际进行数字信号处理时,往往需要把信号的观察时间限制在一定的时间间隔内,只需要选择一段时间信号对其进行分析。这样,取用有限个数据,即将信号数据截断的过程,就等于将信号进行加窗函数操作。而这样操作以后,常常会发生频谱分量从其正常频谱扩展开来的现象,即所谓的“频谱泄漏”。当进行离散傅立叶变换时,时域中的截断是必需的,因此泄漏效应也是离散傅立叶变换所固有的,必须进行抑制。而要对频谱泄漏进行抑制,可以通过窗函数加权抑制DFT的等效滤波器的振幅特性的副瓣,或用窗函数加权使有限长度的输入信号周期延拓后在边界上尽量减少不连续程度的方法实现。而在后面的FIR滤波器的设计中,为获得有限长单位取样响应,需要用窗函数截断无限长单位取样响应序列。另外,在功率谱估计中也要遇到窗函数加权问题。由此可见,窗函数加权技术在数字信号处理中的重要地位。传统的数字滤波器的设计过程复杂,计算工作量大,滤波特性调整困难,影响了它的应用。本文介绍了一种利用MATLAB信号处理工具箱(Signal Processing Toolbox)快速有效的设计由软件组成的常规数字滤波器的设计方法。本文给出了使用MATLAB语言进行程序设计和利用信号处理工具箱的FDA Tool工具进行界面设计的方法。利用MATLAB设计滤波器,可以随时对比设计要求和滤波器特性调整参数,直观简便,极大的减轻了工作量,有利于滤波器设计的最优化。

Abstract

A modern image, Voice and data communications to the linear phase requirement is universal. It is for this reason, making a linear phase FIR digital filters are to develop and widely used.

In practice, digital signal processing, they often need to observe the time limit for the signal in a certain time interval, only need to select a period of time to analyze the signals. In this way, access to a finite number of data about the process of signal data truncation is equivalent to the signal, the additional window function operation. And this after the operation, often occur from the normal component of the spectrum spread spectrum open to the phenomenon of so-called "spectral leakage." When it comes to discrete Fourier transform, the time domain truncation is necessary, therefore, leakage effects are also inherent in discrete Fourier transform, and must be inhibited. But would like to suppress the spectral leakage can be inhibited by the weighted window function equivalent DFT filter amplitude characteristics of side-lobe, or the weighted window function so that the limited length of the extension of the input signal cycle, after the border to minimize the degree of discontinuity The method of implementation. In the back of the FIR filter design, in order to obtain finite sampling units to respond to the need to truncate the infinite length window function with unit sampling response sequence. In addition, power spectrum estimation problem also encountered in the weighted window function. Thus, the weighted windows function in digital signal processing in an important position. Conventional digital filter design process is complex, computing workload, difficulties in adjustment of filter characteristics, affecting its application. This paper introduces a MATLAB Signal Processing Toolbox (Signal Processing Toolbox) quickly and efficiently design formed by the software of conventional digital filter design methods. This article presents use MATLAB language for programming and utilization of signal processing Toolbox FDA Tool for interface design. A filter was designed using MATLAB. You can always compare the design requirements and adjust the parameters of filter characteristics, visual simple and greatly reduced the workload will help filter design optimized.

1 MATLAB的概况

MATLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多.

应用MATLAB这一软件来设计滤波器,与传统的设计思路相比是非常的简便的.具体来说主要有以下几点:

1) MATLAB的GUID可以提供给使用者一个进行人机交换的环境,在此环境中,使用者没有必要了解程序内部具体的编写情况,在这个界面上他只要输入他所期望的滤波器的性能指标就可以了。

2) 利用MATLAB可以进行系统仿真,也就是说,使用者可以通过计算机进行对数字滤波器的频率响应图据的处理和波形的检测,不像以前必须借助一定的实验器材才可以得到。

3) MATLAB内部有丰富的函数可供调用,使用者只需要根据自己的需要查到所需要的函数名,那就可以直接调用使用了.不需要自己把函数详细的编写出来.使编写内部程序变的简单。 MATLAB包括拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类.

开放性使MATLAB广受用户欢迎.除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包.

用MATLAB设计低通带通高通和带阻FIR数字滤波器
篇三:matlab,fir,带通

抽样频率为f 为1KHZ的数字带通滤波器,性能要求为:通带范围从200HZ到250HZ,在此两频率处衰减不大于3dB,在100HZ和400HZ频率处频率衰减不得小于20dB,采用巴特沃斯滤波器

4阶Butterworth滤波器源代码

n = 2;

Wn = [200 250]/500;

[b,a] = butter(n,Wn);

freqz(b,a,512,1000);

这个滤波器100Hz、400Hz处衰减在-30db以上。

可以通过增大n增加衰减。

用MATLAB设计低通带通高通和带阻FIR数字滤波器

(1)低通滤波器的技术指标:H(ejw)=1,0<w<0.3pi;

H(ejw)=0,0.3pi<w<pi.

(2)带通滤波器的技术指标:H(ejw=0,0<w<0.4pi;

H(ejw)=1;0.4pi<w<0.6pi;H(ejw)=0,0.6<w<pi;

(3)高通滤波器的技术指标:H(ejw)=0,0<w<0.7pi;

H(ejw)=1,0.7pi<w<pi.

(4)带阻滤波器的技术指标:H(ejw)=1,0<w<0.3pi;

H(ejw)=0;0.3pi<w<0.7pi;H(ejw)=1,0.7<w<pi;

低通采样定理实验

1.1 实验目的

1.了解数字信号处理系统的一般构成;

2.掌握奈奎斯特抽样定理。

1.2 实验仪器

1.YBLD智能综合信号源测试仪 1台

2.双踪示波器 1台

3.MCOM-TG305数字信号处理与现代通信技术实验箱 1台

4.PC机(装有MATLAB、MCOM-TG305配套实验软件) 1台

1.3 实验原理

一个典型的DSP系统除了数字信号处理部分外,还包括A/D和D/A两部分。这是因为自然界的信号,如声音、图像等大多是模拟信号,因此需要将其数字化后进行数字信号处理,模拟信号的数字化即称为A/D转换。数字信号处理后的数据可能需还原为模拟信号,这就需要进行D/A转换。一个仅包括A/D和D/A两部分的简化数字信号处理系统功能如图1所示。

A/D转换包括三个紧密相关的过程,即抽样、量化和编码。A/D转换中需解决的以下几个重要问题:抽样后输出信号中还有没有原始信号的信息?如果有能不能把它取出来?抽样频率应该如何选择?

奈奎斯特抽样定理(即低通信号的均匀抽样定理)告诉我们,一个频带限制在0至fx以内的低通信号x(t),如果以fs≥2fx的抽样速率进行均匀抽样,则x(t)可以由抽样后的信号xs(t)完全地确定,即xs(t)包含有x(t)的成分,可以通过适当的低通滤波器不失真地恢复出x(t)。最小抽样速率fs=2fx称为奈奎斯特速率。

低通

译码

编码

量化matlab,fir,带通。

抽样

输入信号样点输出滤波输出

A/D(模数转换) D/A(数模转换)

matlab,fir,带通。

图1 低通采样定理演示

为方便实现,实验中更换了一种表现形式,即抽样频率固定(10KHz),通过改变输入模拟信号的频率来展示低通抽样定理。我们可以通过研究抽样频率和模拟信号最高频率分量的频率之间的关系,来验证低通抽样定理。

1.4 实验内容

1.软件仿真实验:编写并调试MATLAB程序,分析有关参数,记录有关波形。

2.硬件实验:输入不同频率的正弦信号,观察采样时钟波形、输入信号波形、样点输出波形和滤波输出波形。

1.5 MATLAB参考程序和仿真内容

%*******************************************************************%

%f—余弦信号的频率

% M—基2 FFT幂次数 N=2^M为采样点数,这样取值是为了便于作基2的FFT分析

%2. 采样频率Fs

%*******************************************************************%

function samples(f,Fs,M)

N=2^M; % fft点数=取样总点数

Ts=1/Fs; % 取样时间间隔

T=N*Ts; % 取样总时间=取样总点数*取样时间间隔

n=0:N-1;

t=n*Ts;

Xn=cos(2*f*pi*t);

subplot(2,1,1);

stem(t,Xn);

axis([0 T 1.1*min(Xn) 1.1*max(Xn)]);

xlabel('t -->');

ylabel('Xn');

Xk=abs(fft(Xn,N));

subplot(2,1,2);

stem(n,Xk);

axis([0 N 1.1*min(Xk) 1.1*max(Xk)]);

xlabel('frequency -->');

ylabel('!Xk!');

%*******************************************************************%

假如有一个1Hz的余弦信号y=cos(2*π*t),对其用4Hz的采样频率进行采样,共采样32点,只需执行samples(1,4,5),即可得到仿真结果。

软件仿真实验内容如下表所示:

仿真参数

f

Fs

Wo(计算)

Xn(图形)

Xk(图形)

(1,4,5)

另外记录图形,并标图号

(1,8,5)

(2,8,6)

自选

1.6 硬件实验步骤

本实验箱采样频率fs固定为10KHz,低通滤波器的截止频率约为4.5KHz。

1、用低频信号源产生正弦信号,正弦信号源频率f自定,并将其接至2TP2(模拟输入)端,将示波器通道一探头接至2TP6(采样时钟)端观察采样时钟波形,示波器通道二探头接至2TP2观察并记录输入信号波形。

2、将示波器通道二探头接至2TP3观察并记录样点输出波形。

3、将示波器通道二探头接至2TP4观察并记录滤波输出波形。

4、根据采样定理,分f=fs /8、f=fs/4、f=fs/2等3种情况更改正弦信号频率,重复步骤2至步骤3。

5、用低频信号源产生方波信号,重复步骤1至步骤4。

FIR低通滤波器+matlab编程+滤波前后图形
篇四:matlab,fir,带通

Matlab实现振动信号低通滤波

附件txt中的数字是一个实测振动信号,采样频率为5000Hz,试设计一个长度为M=32的FIR低通滤波器,截止频率为600Hz,用此滤波器对此信号进行滤波。要求:

(1) 计算数字截止频率;

(2) 给出滤波器系数;

(3) 绘出原信号波形;

(4) 绘出滤波后的信号波形;

解答过程:

第一部分:数字截止频率的计算

数字截止频率等于截止频率除以采样频率的一半,即n=600/5000/2=0.24 第二部分:滤波器系数的确定

在matlab中输入如下程序,即可得到滤波器系数:

n=32

Wn=0.24

b=fir1(n,Wn)

得到的滤波器系数b为

Columns 1 through 9

-0.0008 -0.0018 -0.0024 -0.0014 0.0021 0.0075 0.0110 0.0077 -0.0054

Columns 10 through 18

-0.0242 -0.0374 -0.0299 0.0087 0.0756 0.1537 0.2166 0.2407 0.2166

Columns 19 through 27

0.1537 0.0756 0.0087 -0.0299 -0.0374 -0.0242 -0.0054 0.0077 0.0110

Columns 28 through 33

0.0075 0.0021 -0.0014 -0.0024 -0.0018 -0.0008

第三部分:原信号波形

将附件4中的dat文件利用识别软件读取其中的数据,共1024个点,存在TXT文档中,取名bv.txt,并复制到matlab的work文件夹。

在matlab中编写如下程序:

x0=load('zhendong.txt'); %找到信号数据地址并加载数据。 t=0:1/5000:1023/5000; %将数据的1024个点对应时间加载

figure(1);

plot(t,x0);

xlabel('t/s');

ylabel('幅值');

运行之后就得到如下波形,即振动信号的原始波形图:

1.5

1

0.5

幅值0

-0.5

-1

-1.500.050.1

t/s0.150.20.25

第四部分:滤波后的波形图

在matlab窗口中输入如下程序,即可得到滤波后的波形图: x0=load('zhendong.txt');

t=0:1/5000:1023/5000;

figure(1);

plot(t,x0);

xlabel('t/s');

ylabel('幅值');

fs=5000;

n=32;

Wn=0.24;

b=fir1(n,Wn); %求滤波系数

y0=filter(b,1,x0); %用matlab自带的filter函数进行滤波 figure(2);

plot(t,y0);

xlabel('t/s');

ylabel('幅值');

程序运行后就可以得到滤波后的波形,如下图所示:

0.6

0.4

0.2

幅值

-0.2

-0.4

-0.6

-0.800.050.1

t/s0.150.20.25

本文来源:http://www.myl5520.com/jiaoanxiazai/125850.html

推荐内容