MATLAB 源代码示例,在输入信号500Hz信号上叠加一组叠加工频噪声,工频噪声的频率为50Hz, 设计滤波器去除 50Hz 的工频干扰。
时间: 2023-06-17 10:07:45 浏览: 118
以下是一个 MATLAB 示例代码,可以实现在输入信号上添加一组叠加的工频噪声,并使用设计好的滤波器去除50Hz的工频干扰。
```matlab
% 生成 500Hz 的正弦信号
fs = 10000; % 采样率为 10000Hz
t = 0:1/fs:1; % 时间范围为 1s
f = 500; % 正弦波频率为 500Hz
x = sin(2*pi*f*t); % 生成正弦信号
% 生成 50Hz 的工频噪声
f_noise = 50; % 噪声频率为 50Hz
noise = 0.1*sin(2*pi*f_noise*t); % 生成噪声信号,幅值为 0.1
% 叠加噪声信号
y = x + noise;
% 设计去除 50Hz 工频噪声的滤波器
f_stop = 50; % 截止频率为 50Hz
f_pass = 60; % 通带频率为 60Hz
Rp = 1; % 通带最大衰减为 1dB
Rs = 40; % 阻带最小衰减为 40dB
[b, a] = ellipord(2*pi*f_pass/fs, 2*pi*f_stop/fs, Rp, Rs); % 计算滤波器阶数
[b, a] = ellip(b, Rp, Rs, 2*pi*f_pass/fs); % 设计滤波器系数
% 应用滤波器
z = filter(b, a, y);
% 绘制原始信号、叠加噪声信号和滤波后的信号
figure;
plot(t, x, 'b', t, y, 'g', t, z, 'r');
legend('原始信号', '添加噪声信号', '滤波后的信号');
xlabel('时间(秒)');
ylabel('幅值');
```
上述代码中,我们首先生成了一个频率为 500Hz 的正弦信号。然后,我们生成了一个频率为 50Hz 的工频噪声信号,并将其叠加在正弦信号上。接下来,我们使用 ellip 函数设计了一个 ellip 类型的带阻滤波器,以去除 50Hz 的工频干扰。最后,我们将滤波器应用于叠加了噪声的信号,得到了去除了工频噪声的信号,并绘制了原始信号、叠加噪声信号和滤波后的信号的波形图。