matlab产生参数可调的干扰源,新手求消除50HZ工频干扰陷波滤波器源程序
时间: 2023-06-17 15:07:47 浏览: 130
以下是一个简单的 MATLAB 源代码示例,用于生成可调参数的 50Hz 工频干扰源,并使用陷波滤波器进行滤波。你可以根据需要调整参数:
```matlab
% 生成干扰信号
fs = 1000; % 采样率
f0 = 50; % 工频
t = 0:1/fs:1-1/fs; % 时间范围
A = 1; % 幅度
phi = 0; % 初始相位
f = A*sin(2*pi*f0*t + phi); % 生成正弦波
% 添加噪声
noise_level = 0.1; % 噪声级别
noise = noise_level*randn(size(t)); % 生成随机噪声
signal = f + noise; % 添加噪声
% 陷波滤波器
f0_trap = 50; % 陷波中心频率
Q = 30; % 质量因数
w0 = 2*pi*f0_trap/fs; % 角频率
alpha = sin(w0)/(2*Q);
b = [1, -2*cos(w0), 1];
a = [1, -2*alpha*cos(w0), (alpha^2)];
trap_signal = filter(b, a, signal); % 滤波
% 绘制信号和滤波后的信号
figure;
subplot(2,1,1);
plot(t, signal);
title('原始信号');
xlabel('时间 (s)');
ylabel('幅度');
subplot(2,1,2);
plot(t, trap_signal);
title('滤波后的信号');
xlabel('时间 (s)');
ylabel('幅度');
```
这个源代码会生成一个包含 50Hz 工频干扰和噪声的信号,并使用陷波滤波器将其滤波。你可以根据需要修改参数,例如陷波中心频率、质量因数等。
阅读全文