用matlab实现完全重建两通道滤波器组的程序详解
来源:互联网 发布:js按钮点击增加div 编辑:程序博客网 时间:2024/06/06 04:22
(之前是在百度经验上写的,后来百度经验的账号给忘记了,就重新调出来相关文档,以后会多在这里写些文章)
近期由于项目需要两通道滤波器组的基础知识和仿真实现,我就在网上学习了很多两通道滤波器组的知识,但是其仿真实现的程序却很少见。为此,我就根据所学知识,认真完成了两通道滤波器组的完全重建仿真程序,给一些需要的朋友提供一些便利。
测试信号:1. chirp信号 2. 余弦信号 3. 减幅余弦信号
仿真软件:Matlab R2009a
A. 基本知识:
滤波器组分为分析滤波器组和综合滤波器组。分析滤波器组将信号分成M个子带信号。若M=2,则分析滤波器组由一个低通滤波器和一个高通滤波器所组成,它们把信号分成了一个低通信号和一个高通信号。我们可依据这两个子带信号所具有的能量的不同,也即“重要性”的不同而分别给以不同的对待及处理。由于分析滤波器组将原信号的带宽压缩为1/M,因此,对每一个子带信号均可作M倍的抽取,从而将抽样率减低M倍。这样可减小编码和处理的计算量,同时,在硬件实现时也可以降低对系统性能的要求,从而降低成本。在综合滤波器组前面,再作M倍的插值,以得到和原信号相同的抽样率。
两通道滤波器组的框图如图所示,具体节点的表达式可参考书籍:多抽样率数字信号处理理论及其应用(作者:陶然,张惠云,王越 清华大学出版社)
B. 实现完全重建两通道滤波器组的程序:
clear all;close all;clc;%%%%%%%%%%%%%%%%%%% 初始信号 %%%%%%%%%%%%%%%%%%%%%%N = 50;m= 0:N-1;%%%%% 测试信号 %%%%%x1 = exp(-j*0.3*pi*m+j*m.^2); %%%chirp信号x1 = cos(0.04*pi*m)+0.2*randn(size(m)); %% 余弦信号x1 = exp(-0.1*m).*cos(0.2*pi*m); %% 减幅余弦信号figure(1);stem(m,x1);%%%%%%%%%%%%%%%%%% 滤波器设计 %%%%%%%%%%%%%%%%%%%%%%%%%%%%Design a filter bank with filters of order n equal to 99 and passband%%edges of 0.45 and 0.55.n = 99;[h0,h1,g0,g1] = firpr2chfb(n,.45);hfv = fvtool(h0,1,h1,1,g0,1,g1,1);set(hfv, 'Color', [1,1,1]);legend(hfv,'Hlp Lowpass Decimator','Hhp Highpass Decimator', 'Glp Lowpass Interpolator','Ghp Highpass Interpolator');%%%%%%%%%%%%%%% 信号一般重建:幅度失真,相位失真 %%%%%%%%%%%%%%%%%%%%%%%%%%%% 通道一 %%%%%%v0 = conv(x1,h0);%% 抽取u0=v0(1:2:end);%% 内插v00 = upsample(u0,2); %%y_1 = conv(v00,g0);%%%% 通道二 %%%%%%%v1 = conv(x1,h1);%% 抽取u1=v1(1:2:end);%% 内插v11 = upsample(u1,2); y_2 = conv(v11,g1);%%%%% 两通道之和:重建 %%%%%%% y = y_1+ y_2;figure(3);stem(y);%%%%% 重建信号与初始信号的比较 %%%%%figure(4);stem(m,y([n+1:1:n+N]));hold onstem(m,x1,'*');C. 以测试信号——减幅余弦信号——为例子,得到的仿真结果:
D. 注意事项
1. 2倍的内插一定是零值内插,不可以是线性内插。
2. 程序中函数firpr2chfb——Two-channel FIR filter bank for perfect reconstruction——是直接根据参数来设计完全重建滤波器的函数,函数的具体细节可参考http://www.mathworks.cn/cn/help/dsp/ref/firpr2chfb.html
- 用matlab实现完全重建两通道滤波器组的程序详解
- FIR滤波器的Matlab实现
- Matlab实现Butterworth滤波器
- 用MATLAB实现领域平均法抑制噪声程序(线性滤波器)
- 用Matlab设置滤波器
- [matlab]通道化测试程序
- matlab中实现Gabor滤波器
- matlab中实现Gabor滤波器
- matlab中实现Gabor滤波器
- Matlab-奈奎斯特滤波器实现《一》
- Matlab-奈奎斯特滤波器实现《二》
- kalman 滤波器及其MATLAB实现
- 用Matlab及C语言实现低通滤波器的设计
- 基于Matlab的FIR滤波器设计与实现
- 基于Matlab的FIR滤波器设计与实现
- STM32实现IIR滤波器,可用matlab生成的头文件
- BoxFilter包滤波器的Matlab代码实现分析(基础)
- 基于FPGA与MATLAB的IIR滤波器设计与实现
- ZOJ 1001 Java版
- [Phonegap+Sencha Touch] 移动开发26 Android下的sencha touch程序,转屏时,Ext.Viewport不能触发orientationchange事件的解决办法
- linux 各种信号 产生的原因
- VSD2PDF源代码,帮做你做好类似百度文库的在线文档浏览器
- spring的自动装配(default-autowire="byName")
- 用matlab实现完全重建两通道滤波器组的程序详解
- 计算出的地球两地之间的距离
- 各大IT公司待遇
- cocos2d 重写顶点着色语言
- ThinkPhp查询数据库的几种方式
- 一分钟掌握Spring中bean的生命周期!
- 移除“下载额外数据不成功”的恼人提示通知
- 编译原理课设——《TINY编译器》,用lex和yacc生成词法语法分析源码,实现编译器
- 操作系统--------基本知识整理持续更新