电力线干扰滤波matlab
时间: 2023-12-26 15:05:23 浏览: 104
期权matlab代码-removePLI:一种从神经记录中消除电力线干扰的算法的源代码
以下是使用MATLAB进行电力线干扰滤波的示例代码:
```matlab
% 读取ECG信号数据
ecg_signal = load('ecg_signal.mat');
ecg_signal = ecg_signal.ecg_signal;
% 设计滤波器
fs = 1000; % 采样率
f0 = 50; % 电力线频率
Q = 30; % 带宽
wo = f0/(fs/2);
bw = wo/Q;
[b, a] = iirnotch(wo, bw);
% 应用滤波器
filtered_signal = filter(b, a, ecg_signal);
% 绘制滤波前后的信号
t = (0:length(ecg_signal)-1)/fs;
figure;
subplot(2,1,1);
plot(t, ecg_signal);
title('原始ECG信号');
xlabel('时间 (s)');
ylabel('幅值');
subplot(2,1,2);
plot(t, filtered_signal);
title('滤波后的ECG信号');
xlabel('时间 (s)');
ylabel('幅值');
```
这段代码首先读取了ECG信号数据,然后设计了一个带通滤波器来滤除电力线干扰。滤波器使用了MATLAB内置的iirnotch函数来设计一个陷波滤波器,该滤波器的中心频率为50Hz,带宽为30。最后,应用滤波器对ECG信号进行滤波,并绘制了滤波前后的信号图。
阅读全文