首页 > 其他分享 >滤波器实现

滤波器实现

时间:2023-11-14 13:02:54浏览次数:37  
标签:滤波器 实现 滤波 filter 卷积 传递函数 冲激响应


滤波器实现

卷积和滤波

        滤波的数学基础是卷积。对于有限冲激响应 (FIR) 滤波器,滤波运算的输出 y(k) 是输入信号 x(k) 与冲激响应 h(k) 的卷积:

y(k)=∞∑l=−∞h(l) x(k−l).

       如果输入信号也是有限长度的,您可以使用 MATLAB® conv 函数来执行滤波运算。例如,要用三阶平均值滤波器对包含五个样本的随机向量进行滤波,可以将 x(k) 存储在向量 x 中,将 h(k) 存储在向量 h 中,并求这两个向量的卷积:

x = randn(5,1);
h = [1 1 1 1]/4;   % A third-order filter has length 4
y = conv(h,x)


y = -0.3375 0.4213 0.6026 0.5868 1.1030 0.3443 0.1629 0.1787


y 的长度比 x 和 h 的长度之和小 1。

滤波器和传递函数

       滤波器的传递函数是其冲激响应的 Z 变换。对于 FIR 滤波器,输出 y 的 Z 变换 Y(z) 是传递函数和输入 x 的 Z 变换 X(z) 的乘积:

Y(z)=H(z)X(z)=(h(1)+h(2)z−1+⋯+h(n+1)z−n)X(z).

多项式系数 h(1), h(2), …, h(n + 1) 对应于第 n 阶滤波器的冲激响应的系数。

注意

滤波器系数索引从 1 到 (n + 1),而不是从 0 到 n。这反映了用于 MATLAB 向量的标准索引方案。

FIR 滤波器也称为全零、非递归或移动平均值 (MA) 滤波器。

对于无限冲激响应 (IIR) 滤波器,传递函数不是多项式,而是有理函数。输入和输出信号的 Z 变换的关系是:

Y(z) = H(z)X(z) = b(1)+b(2)z−1+...+b(n+1)z−na(1)+a(2)z−1+...+a(m+1)z−mX(z),

其中 b(i) 和 a(i) 是滤波器系数。在本例中,滤波器的阶是 n 和 m 的最大值。n = 0 的 IIR 滤波器也称为全极点、递归或自回归 (AR) 滤波器。n 和 m 均大于零的 IIR 滤波器也称为零极点、递归或自回归移动平均值 (ARMA) 滤波器。缩写 AR、MA 和 ARMA 通常应用于与滤波随机过程相关联的滤波器。

使用 filter 函数进行滤波

对于 IIR 滤波器,滤波运算不能用简单的卷积来说明,而需要用可从传递函数关系中找到的差分方程来说明。假设 a(1) = 1,将分母移到左侧,并进行逆 Z 变换,以获得

y(k)+a(2) y(k−1)+…+a(m+1) y(k−m)=b(1) x(k)+b(2) x(k−1)+⋯+b(n+1) x(k−n).

对于当前输入、过去的输入以及过去的输出,y(k) 是

y(k)=b(1) x(k)+b(2) x(k−1)+⋯+b(n+1) x(k−n)−a(2) y(k−1)−⋯−a(m+1) y(k−m),

这是数字滤波器的标准时域表示。从 y(1) 开始,假设一个初始条件为零的因果系统,表示等效于

y(1)=b(1) x(1)y(2)=b(1) x(2)+b(2) x(1)−a(2) y(1)y(3)=b(1) x(3)+b(2) x(2)+b(3) x(1)−a(2) y(2)−a(3) y(1)  ⋮   y(n)=b(1) x(n)+⋯+b(n) x(1)−a(2) y(n−1)−⋯−a(n) y(1).

要实现此滤波运算,您可以使用 MATLAB filter 函数。filter

y(n)−0.9y(n−1)=x(n) ⇒ Y(z)=11−0.9 z−1X(z)=H(z) X(z),

,您可以使用

b = 1;
a = [1 -0.9];
y = filter(b,a,x);

filter 提供的输出样本的数量与输入样本一样多,即 y 的长度与 x 的长度相同。如果 a 的第一个元素不是 1,则 filter 在实现差分方程之前,将系数除以 a(1)。

另请参阅

App

函数

滤波器实现_matlab

标签:滤波器,实现,滤波,filter,卷积,传递函数,冲激响应
From: https://blog.51cto.com/oliverHuang/8366110

相关文章

  • 补偿 FIR 滤波器引入的延迟
    补偿FIR滤波器引入的延迟对信号进行滤波会引入延迟。这意味着相对于输入,输出信号在时间上有所偏移。此示例向您说明如何抵消这种影响。有限冲激响应滤波器经常将所有频率分量延迟相同的时间量。这样,我们就很容易通过对信号进行时移处理来针对延迟进行校正。以500Hz的频率对心......
  • 补偿 IIR 滤波器引入的延迟
    补偿IIR滤波器引入的延迟对信号进行滤波会引入延迟。这意味着相对于输入,输出信号在时间上有所偏移。无限冲激响应滤波器对某些频率分量的延迟可能比其他频率分量更长。它们会使输入信号呈现明显失真。函数 filtfilt 可补偿此类滤波器引入的延迟,从而校正滤波器失真。这种“零相......
  • 数字滤波器设计---IIR 滤波器设计
    数字滤波器设计---IIR滤波器设计IIR与FIR滤波器的比较与FIR滤波器相比,IIR滤波器的主要优点是,要满足同一组设定,它的滤波器阶数通常远远低于FIR滤波器。虽然IIR滤波器具有非线性相位,但MATLAB® 软件中的数据处理通常是“离线”执行的,即整个数据序列在滤波之前是可用的。......
  • js:React中使用classnames实现按照条件将类名连接起来
    参考文档https://www.npmjs.com/package/classnameshttps://github.com/JedWatson/classnames安装npminstallclassnames示例importclassNamesfrom"classnames";//字符串合并console.log(classNames("foo","bar"));//foobar//对象合并console.lo......
  • 基于React使用swiperjs实现竖向滚动自动轮播
    很多文章,都只提供了js部分,包括官方的文档也只有js部分,如果css设置不正确,会导致轮播图不自动播放。使用的swiper版本:v11.0.3文档https://swiperjs.com/get-startedhttps://swiperjs.com/react实现效果使用vite创建react应用pnpmcreatevitereact-app--templatereact完整依赖pac......
  • PostCSS通过px2rem插件和lib-flexible将px单位转换为rem(root em)单位实现大屏适配
    目录文档postcss中使用postcss-plugin-px2rem安装postcss-plugin-px2rem示例默认配置webpack中使用postcss-plugin-px2rem项目结构安装依赖文件内容大屏适配参考文章文档类似的插件postcss-plugin-px2remhttps://www.npmjs.com/package/postcss-plugin-px2remhttps://github.com/......
  • PHP大文件分割分片上传实现代码
    这篇文章主要介绍了PHP大文件分割分片上传实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下服务端为什么不能直接传大文件?跟php.ini里面的几个配置有关upload_max_filesize=2M//PHP最大能接受的文件大小post_max_s......
  • 生产线平衡:实现高效生产的艺术
    在制造业领域,生产线平衡是一个关键的概念,它涉及到对生产流程的精细化管理和优化。简单来说,生产线平衡就是对生产的全部工序进行平均化、均衡化,调整各工序或工位的作业负荷或工作量,以实现各作业时间尽可能相近或相等的目的。这样做的目的是消除各种等待浪费现象,进一步提高生产效率......
  • TDengine 与煤科院五大系统实现兼容性互认,助力煤矿智能化安全体系搭建
    近日,涛思数据与煤炭科学技术研究院(以下简称煤科院)已完成数个产品兼容互认证工作,经双方共同严格测试,涛思数据旗下物联网、工业大数据平台TDengineV3.X与煤炭科学技术研究院旗下煤矿复合灾害监测监控预警系统、煤矿灾害智能预警与综合防治系统、KJ236J煤矿井下人员精确定位系统、......
  • SpringBoot定义拦截器+自定义注解+Redis实现接口防刷(限流)
    实现思路在拦截器Interceptor中拦截请求通过地址+请求uri作为调用者访问接口的区分在Redis中进行计数达到限流目的简单实现定义参数访问周期最大访问次数禁用时长#接口防刷配置,时间单位都是秒.如果second秒内访问次数达到times,就禁用lockTime秒access:lim......