帮我生成50Hz工频滤波器的matlab代码
时间: 2023-11-28 14:05:52 浏览: 95
50Hz 工频滤波器通常是用于去除电源线干扰信号的滤波器,是一种常用的滤波器。下面是使用 MATLAB 实现 50Hz 工频滤波器的代码示例:
```
% 生成测试信号
t = linspace(0, 1, 1000);
x = sin(2*pi*10*t) + 0.5*sin(2*pi*50*t) + 0.2*sin(2*pi*100*t);
% 50Hz 工频滤波器
Fs = 1000; % 采样率
Fpass = 48; % 通带频率
Fstop = 52; % 阻带频率
Apass = 1; % 通带增益
Astop = 60; % 阻带增益
dev = [(10^(Apass/20)-1)/(10^(Apass/20)+1) 10^(-Astop/20)]; % 计算通带和阻带的最大允许偏差
N = 100; % 滤波器阶数
[b, a] = firpm(N, [0 Fpass Fstop Fs/2]/(Fs/2), [1 1 0 0], [1 dev(1)/dev(2)]);
% 对信号进行滤波
y = filter(b, a, x);
% 绘制原始信号和滤波后的信号
figure;
subplot(2, 1, 1);
plot(t, x);
title('原始信号');
xlabel('时间');
ylabel('幅度');
subplot(2, 1, 2);
plot(t, y);
title('滤波后的信号');
xlabel('时间');
ylabel('幅度');
```
在上述代码中,首先生成了一个测试信号 `x`,其中包含了 10Hz、50Hz 和 100Hz 三个频率分量。接着定义了一个 50Hz 工频滤波器,其中的参数和方法一中的相同。使用 firpm 函数生成了一个阶数为 100 的 FIR 滤波器,滤波器系数保存在变量 `b` 中。最后使用 filter 函数对信号进行滤波,滤波后的信号保存在变量 `y` 中,然后绘制出原始信号和滤波后的信号。
阅读全文