Matlab中filter函数的用法

y=filter(b,a,x)

其中y为输出信号,x为输入信号,b是滤波器传递函数的分子系数,a是滤波器传递函数的分母系数。

当a为1(a0=1)时,filter函数执行的是卷积操作,为FIR滤波器的工作方式, 如果a包含多个元素,那么filter函数执行的是IIR的工作方式。IIR滤波器是递归的,意味着它用输入信号的历史值来计算当前值。虽然IIR滤波器通常使用更少的系数来实现相同的滤波效果,但可能存在稳定性问题,引入相位失真。

下面举一个不同长度CIC滤波器的频谱特性应用:

clc;
clear all;
 
M = 2;
b = ones(1,M);
delta = [1 zeros(1,1023)];
s = filter(b,1,delta);
spec = 20*log10(abs(fft(s)));      
spec2 = spec - max(spec);
f = 0:length(spec)-1;
f = 2*f/(length(spec)-1);          
 
M = 5;
b = ones(1,M);
delta = [1 zeros(1,1023)];
s = filter(b,1,delta);
spec = 20*log10(abs(fft(s)));      
spec5 = spec - max(spec);
 
M = 8;
b = ones(1,M);
delta = [1 zeros(1,1023)];
s = filter(b,1,delta);
spec = 20*log10(abs(fft(s)));      
spec8 = spec - max(spec);
 
plot(f,spec2,'-',f,spec5,'.',f,spec8,'--');
axis([0 1 -50 5]);
xlabel('归一化频率');ylabel('幅度(dB)');
legend('M=2','M=5','M=8');
grid;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值