在MATLAB中,filter函数用于对信号进行数字滤波。它采用两个参数,一个是滤波器的系数向量,另一个是待滤波的信号。
语法如下:
y = filter(b, a, x)
其中,b是滤波器的分子系数向量,a是滤波器的分母系数向量,x是待滤波的信号。
例如,对一个正弦波信号进行一个10阶低通滤波器滤波,可以使用以下代码:
fs = 1000; % 采样频率
t = 0:1/fs:1; % 时间序列
f = 50; % 正弦波频率
x = sin(2*pi*f*t); % 正弦波信号
% 低通滤波器系数
fc = 100; % 截止频率
[b, a] = butter(10, fc/(fs/2));
% 使用filter函数滤波
y = filter(b, a, x);
% 绘制结果
figure;
subplot(2, 1, 1);
plot(t, x);
title('原始信号');
subplot(2, 1, 2);
plot(t, y);
title('滤波后信号');
在以上代码中,首先定义了一个正弦波信号,然后使用butter函数生成了一个10阶低通滤波器的系数,最后使用filter函数对信号进行滤波,并绘制了原始信号和滤波后的信号。
请注意,滤波器系数b和a的长度应为相同且非零。