matlab代码实现对单通道EEG数据进行高阶滤波
时间: 2023-05-31 20:03:07 浏览: 127
以下是对单通道EEG数据进行高阶滤波的MATLAB代码实现:
```
% 读取单通道EEG数据
eeg_data = load('single_channel_eeg_data.mat');
eeg_data = eeg_data.eeg_data;
% 设计高通滤波器
fs = 1000; % 采样频率
fc = 1; % 截止频率
n = 10; % 滤波器阶数
[b,a] = butter(n,fc/(fs/2),'high'); % 设计Butterworth高通滤波器
% 高通滤波
filtered_data = filtfilt(b,a,eeg_data); % 使用filtfilt函数进行零相移滤波
% 设计带通滤波器
f_low = 10; % 低频截止频率
f_high = 30; % 高频截止频率
Wn = [f_low/(fs/2) f_high/(fs/2)]; % 截止频率范围
[b2,a2] = butter(n,Wn,'bandpass'); % 设计Butterworth带通滤波器
% 带通滤波
filtered_data = filtfilt(b2,a2,filtered_data);
% 可以继续添加其他滤波器进行更高阶的滤波
```
这段代码首先读入单通道EEG数据,然后使用Butterworth高通滤波器进行高通滤波,再使用Butterworth带通滤波器进行带通滤波。可以根据需要添加其他滤波器进行更高阶的滤波。其中,使用了MATLAB内置的`butter`函数进行滤波器设计,以及`filtfilt`函数进行零相移滤波。
阅读全文