一、四种线性相位FIR滤波器的振幅响应

1、自编函数

[Hr,w,a,L]=hr_type1(h)(P256)  % h偶对称,N为奇数,h(n)=h(N-1-n)
[Hr,w,a,L]=hr_type2(h) (P257) % h偶对称,N为偶数,h(n)=h(N-1-n)
[Hr,w,a,L]=hr_type3(h) (P257) % h奇对称,N为奇数,h(n)=-h(N-1-n)
[Hr,w,a,L]=hr_type4(h) (P257) % h奇对称,N为偶数,h(n)=-h(N-1-n)

2、一个demo

clear all;close all;clc
addpath(genpath(pwd)); % 添加当前文件夹下所有路径 %%
% 题1. 线性相位 FIR 滤波器的特性:
%% (2)已知滤波器的系统函数如下所示,用以上已编好的函数,确定滤波器的振
% 幅响应Hr(w)以及零点位置:
h1_n = [-4,1,-1,-2,5,6,5,-2,-1,1,-4]; % 偶对称,N=11
h2_n = [-4,1,-1,-2,5,6,6,5,-2,-1,1,-4]; % 偶对称,N=12
h3_n = [-4,1,-1,-2,5,0,-5,2,1,-1,4]; % 奇对称,N=11
h4_n = [ -4,1,-1,-2,5,6,-6,-5,2,1,-1,4]; % 奇对称,N=12 new_figure('线性相位FIR滤波器');
subplot(2,2,1);
[Hr,w]=hr_type1(h1_n);
plot(w/pi, abs(Hr));
title('第一类线性相位滤波器');
xlabel('w/pi'); subplot(2,2,2);
[Hr,w]=hr_type2(h2_n);
plot(w/pi, abs(Hr));
title('第二类线性相位滤波器');
xlabel('w/pi'); subplot(2,2,3);
[Hr,w]=hr_type3(h3_n);
plot(w/pi, abs(Hr));
title('第三类线性相位滤波器');
xlabel('w/pi'); subplot(2,2,4);
[Hr,w]=hr_type4(h4_n);
plot(w/pi, abs(Hr));
title('第四类线性相位滤波器');
xlabel('w/pi');

 

二、窗函数法

1、窗函数设计参考指标

2、窗函数设计方法一:

(1)根据实际阻带衰减指标,来确定所使用的窗函数。Matlab提供了几个函数来实现这些窗函数。

   W=boxcar(N);            % 矩形窗         -21dB
W=triang(N); % 三角窗 -25dB
W=hanning(N); % 汉宁窗 -44dB
W=hamming(N); % 海明窗 -53dB
W=blackman(N); % 布莱克曼窗 -74dB
W=kaiser(N,beta); % 凯泽窗 -80dB

(2)根据过渡带来计算出N值。

例: 通带截止频率wp, 阻带截止频率ws,已知为汉宁窗:N=3.1*2*pi/(ws-wp);

 

(3)求出理想的hd(n)。可使用ideal_lp(P185)来实现理想低通滤波器的冲激响应。

例:由ideal_lp来实现理想带阻滤波器的冲激响应。

hd=ideal_lp(wc1,N)+ideal_lp(pi,N)-ideal_lp(wc2,N);

 

(4)求得所设计的FIR滤波器的单位抽样响应:

h=hd.*w

 

(5)一个demo:

clear all;
wp=0.2*pi;
Rp=0.25;
ws=0.3*pi;
As=50; wd = ws-wp;
N = ceil(6.6*pi/wd);
wn = (wp+ws)/2; %
hd = ideal_lp(wn,N+1);
w_ham=(hamming(N+1))';
h = hd.*w_ham;
figure(2)
freqz(h,1,512)

 

 

3、窗函数设计方法二:

(1)根据实际阻带衰减指标,来确定所使用的窗函数。

(2)根据过渡带来计算出N值。

(3)利用Matlab所提供的函数fir1,来实现fir滤波器。

h=fir1(N,wn,’ftype’,windows(N+1))

›对于高通滤波器和带阻滤波器,N必须为偶数,N+1为奇数

›‘ftype’指的是:’low’,’bandpass’,’high’,’stop’

›设计的滤波器为N阶

(4)一个demo

%example6.2.3
clear all;
wp=0.2*pi;
Rp=0.25;
ws=0.3*pi;
As=50; wd = ws-wp;
N = ceil(6.6*pi/wd);
wn = (wp+ws)/2;
b=fir1(N,wn/pi,hamming(N+1));
figure(1)
freqz(b,1,512)

 

三、频率抽样法:

1、根据给定的N值和过渡点来求得Hd(k) 。

2、利用DFT反变换求的所需的h(n)。

h=real(ifft(H,N));

 

clear all;
N=40;
T1=0.5925;
T2=0.1099; alpha=(N-1)/2;
l=0:N-1;
wl=(2*pi/N)*l; hrs=[zeros(1,5),T2,T1,ones(1,7),T1,T2,zeros(1,9),T2,T1,ones(1,7),T1,T2,zeros(1,4)];
k1 = 0:floor((N/2-1));
k2 = floor(N/2)+1:N-1;
angh = [-alpha*(2*pi)/N*k1,0,alpha*(2*pi)/N*(N-k2)];
H=hrs.*exp(j*angh);
h=real(ifft(H,N)); figure()
freqz(h,1,512)
[db,mag,pha,grd,w]=freqz_m(h,1);
[hr,ww,a,L]=hr_type2(h); figure()
subplot(2,2,1),stem(wl(1:21)/pi,hrs(1:21)),title('H(k)')
subplot(2,2,2),stem(l,h),title('冲激响应')
subplot(2,2,3),plot(ww/pi,hr);grid;title('幅度响应')
subplot(2,2,4),plot(w/pi,db),axis([0,1,-80,10]),grid,title('幅频响应(db)')

数字信号处理实验(六)——FIR滤波器的设计的更多相关文章

  1. 数字信号处理实验(四)——数字滤波器结构

    一.滤波器结构 1.IIR滤波器 (1)系统函数   (2)差分方程   (3)级联形式:   (4)并联形式   2.FIR滤波器 (1)系统函数   (2)差分方程   (3)级联形式:   (4 ...

  2. 数字信号处理实验(五)——IIR滤波器的设计

    一.使用自编函数设计IIR滤波器 1.冲激响应法 (1)注给出的数字滤波器指标先化成模拟指标 (2)设计出模拟滤波器: (3)使用冲激响应法转化成数字滤波器 (4)一个demo clear all; ...

  3. 数字信号处理实验(一)——DTFT

    1.MATLAB自编绘图函数 function [] = signal_write(X,w,flag) % X:数据 % w:频率向量 magX=abs(X);angX=angle(X); realX ...

  4. 数字信号处理实验(零)—— 一维声音信号处理和二维图像处理

    一.在matlab下声音信号的I/O 1.读wav文件函数 •y = wavread('filename') •[y,Fs,bits] = wavread('filename') •[...] = w ...

  5. 转载论文关于fir滤波器的fpga实现

    摘 要 本文讨论的FIR滤波器因其具有严格的线性相位特性而得到广泛的应用.在工程实践中,往往要求信号处理具有实时性和灵活性,本论文研究FIR的FPGA解决方案正体现了电子系统的微型化和单片化. 本论文 ...

  6. IIR滤波器和FIR滤波器的区别与联系zz

      -------------------------------------------------------------------------------------------------- ...

  7. 《数字信号处理》课程实验2 – FIR数字滤波器设计

    一.FIR数字滤波器设计原理  本实验采用窗函数法设计FIR数字低通滤波器.我们希望设计的滤波器系统函数如下: \(H_{d}\left( e^{jw} \right) = \left\{ \begi ...

  8. 转载--关于FPGA设计数字信号处理电路的心得

    FPGA使用的越来越广泛,除了可用于设计控制电路以为,数字信号处理电路更是FPGA的强项和难点.个人可以说才刚刚入门FPGA设计,也做过一些数字信号处理方面的电路设计,记录下个人心得体会. (一)善用 ...

  9. FIR滤波器设计

    FIR滤波器的优越性: 相位对应为严格的线性,不存在延迟失真,仅仅有固定的时间延迟: 因为不存在稳定性问题,设计相对简单: 仅仅包括实数算法,不涉及复数算法,不须要递推运算,长度为M,阶数为M-1,计 ...

随机推荐

  1. zju3430

    题意:给出多个加密的模式串,和多个待匹配的串,问每个串里出现了多少种模式串.加密方法是把每3bytes加密成按6bits一个对应成4个字符,对应方法题里给了. 分析:除了解密之外,基本是个赤裸裸的AC ...

  2. effective OC2.0 52阅读笔记(五 内存管理)

    第五章:内存管理 29 理解引用计数 30 以ARC简化引用计数 总结:ARC通过命名约定将内存管理规则标准化.其他编程语言很少像OC这样强调命名.ARC通过设置全局数据结构(此数据结构的具体内容因处 ...

  3. Debian Vi 简介

    1.Vi 简介    Vi 是 Unix 世界里极为普遍的全萤幕文书编辑器,几乎可以说任何一台  Unix 机器都会提供这套软体.Linux 当然也有,它的 vi 其实是 elvis (版权问题),不 ...

  4. CSS中的ul与li样式详解

    CSS中的ul与li样式详解ul和li列表是使用CSS布局页面时常用的元素.在CSS中,有专门控制列表表现的属性,常用的有list-style-type属性.list-style-image属性.li ...

  5. 【leetcode】 Palindrome Partitioniong (middle) (*^__^*)

    Given a string s, partition s such that every substring of the partition is a palindrome. Return all ...

  6. db2中报SQLCODE=-530, SQLSTATE=23503错误

    今天在写一个增加操作时,报错信息如下:SQLCODE=-530, SQLSTATE=23503,该sqlcode说明:“对特定的约束名指定了无效的外健值”. 项目中用的框架是SSH,新增的主对象有多个 ...

  7. 甲鱼od19篇随笔

    在一个程序里会有多个对话框,这时要准确的判断要找的对话框就比较困难了所以这里就需要借助 1:Resource Hacker工具来准确的定位涉及到的对话框 2:在od中查找指令,然后在所有找到的指令上下 ...

  8. IOS - 控件的AutoresizingMask属性

    在 UIView 中有一个autoresizingMask的属性,它对应的是一个枚举的值(如下),属性的意思就是自动调整子控件与父控件中间的位置,宽高. enum {   UIViewAutoresi ...

  9. 比较原声socket 、GCDAsyncSocket

    原声socket NSInputStream 输入流(OC)NSOutputStream 输出流(OC)1:通过c语言的输入输出流CFReadStreamRef/CFWirteStreamRef(输入 ...

  10. java web统计当前访问用户数量

    1.使用SessionListener监听器,监听创建与销毁session的操作,利用计数方式记录当前session的数量