MATLAB中conv和filter函数的区别

MATLAB中conv和filter函数的区别本文讨论 MATLAB 中 conv 和 filter 函数的区别

1.函数简介

w = conv(u,v)

w = conv(u,v) 返回向量 uv 的卷积结果,卷积运算是对信号的移位加权求和。

y=filter(b,a,x)

使用由分子和分母系数 b 和 a 定义的有理传递函数对输入数据 x 进行滤波。要将 filter 函数与来自 FIR 滤波器的 b 系数结合使用,请使用 y = filter(b,1,x)

有理传递函数:Z 变换域中这种 filter 运算的输入-输出说明是一种有理传递函数。有理传递函数采用如下形式:
Y ( z ) = b ( 1 ) + b ( 2 ) z − 1 + . . . + b ( n b + 1 ) z − n b 1 + a ( 2 ) z − 1 + . . . + a ( n a + 1 ) z − n a X ( z ) Y(z)=\frac{b(1)+b(2)z^{-1}+...+b(n_b+1)z^{-n_b}}{1+a(2)z^{-1}+...+a(n_a+1)z^{-n_a}}X(z) Y(z)=1+a(2)z1+...+a(na+1)znab(1)+b(2)z1+...+b(nb+1)znbX(z)
可同时处理 FIR 和 IIR 滤波器 。na 是反馈滤波器阶数,nb 是前馈滤波器阶数。

讨论情况

由于conv(u,v)与filter(b,1,x)运算类似,本文只讨论这两种的区别。

2.先说结论

filter(b,1,x)运算的结果可以简单理解为:将conv运算后的结果取前面x向量的长度。

3.代码验证

MATLAB代码:

clear all;close all;clc; %清理工作区,关闭所有窗口,清空文本 % 数据 M=[1,2,3,4,5,6,7,8,9,10]; N=[1,2,3,4]; N_long = [N,zeros(1,4)];%N后面加4个0,长度为8 % 卷积或滤波 N_conv_M = conv(N,M) M_conv_N = conv(M,N) N_filter_M=filter(N,1,M) M_filter_N=filter(M,1,N) M_filter_N_long=filter(M,1,N_long) %长度 disp(['N_conv_M长度为M+N-1=', num2str(length(N_conv_M))]); disp(['M_conv_N长度为M+N-1=', num2str(length(M_conv_N))]); disp(['N_filter_M长度为M=', num2str(length(N_filter_M))]); disp(['M_filter_N长度为N=', num2str(length(M_filter_N))]); disp(['M_filter_N_long长度为N_long=', num2str(length(M_filter_N_long))]); 

命令行打印结果:

N_conv_M = 1 4 10 20 30 40 50 60 70 80 79 66 40 M_conv_N = 1 4 10 20 30 40 50 60 70 80 79 66 40 N_filter_M = 1 4 10 20 30 40 50 60 70 80 M_filter_N = 1 4 10 20 M_filter_N_long = 1 4 10 20 30 40 50 60 N_conv_M长度为M+N-1=13 M_conv_N长度为M+N-1=13 N_filter_M长度为M=10 M_filter_N长度为N=4 M_filter_N_long长度为N_long=8 
今天的文章 MATLAB中conv和filter函数的区别分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-31 11:01
下一篇 2024-12-31 10:57

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/97873.html