fs = 1000; % 采样频率fpass = 0.2*pi; % 通带截止频率fstop = 0.3*pi; % 阻带截止频率Ap = 0.1; % 通带最大衰减(dB)Ast = 60; % 阻带最小衰减(dB)[N, Fc, W, B] = firpmord([fpass, fstop]/(fs/2), [1, 0], [Ap, Ast]); % 计算设定参数h = firpm(N, Fc, W, B); % 设计滤波器用该代码过滤信号的matlab代码
时间: 2024-03-24 14:39:53 浏览: 94
假设要使用设计好的FIR滤波器h对信号x进行滤波,可以使用MATLAB中的conv函数进行卷积运算,代码如下:
```matlab
fs = 1000; % 采样频率
fpass = 0.2*pi; % 通带截止频率
fstop = 0.3*pi; % 阻带截止频率
Ap = 0.1; % 通带最大衰减(dB)
Ast = 60; % 阻带最小衰减(dB)
% 计算FIR滤波器系数
[N, Fc, W, B] = firpmord([fpass, fstop]/(fs/2), [1, 0], [Ap, Ast]);
h = firpm(N, Fc, W, B);
% 生成测试信号
t = 0:1/fs:1;
x = sin(2*pi*50*t) + sin(2*pi*120*t);
% 对信号进行滤波
y = conv(x, h, 'same');
% 绘制原始信号和滤波后的信号
figure;
subplot(2,1,1);
plot(t, x);
title('原始信号');
xlabel('时间(秒)');
ylabel('幅值');
subplot(2,1,2);
plot(t, y);
title('滤波后的信号');
xlabel('时间(秒)');
ylabel('幅值');
```
运行上述代码后,可以得到滤波前后的信号波形图,可以看到滤波后的信号已经去除了50Hz和120Hz两个频率的成分。
需要注意的是,上述代码中的conv函数使用了'same'参数,表示输出的信号长度与输入信号长度相同,即在信号两端都进行了截取,因此需要保证滤波器的长度不超过信号长度的一半,以避免滤波器的边缘效应影响滤波效果。
阅读全文