心电峰值检测matlab代码
时间: 2023-11-25 16:06:07 浏览: 43
以下是一个简单的心电信号峰值检测的 MATLAB 代码示例:
```matlab
% 加载心电信号数据
load ecg_data.mat
% 设置信号采样率和时间轴
fs = 360; % 采样率为 360 Hz
t = (0:length(ecg_signal)-1)/fs;
% 设置滤波器参数
[b,a] = butter(2, [5 15]/(fs/2), 'bandpass');
% 应用滤波器
filtered_signal = filtfilt(b,a,ecg_signal);
% 计算信号的一阶差分
diff_signal = diff(filtered_signal);
% 计算信号的二阶差分
diff2_signal = diff(diff_signal);
% 从二阶差分信号中找到峰值位置
[~,locs] = findpeaks(diff2_signal, 'MinPeakHeight', 0.5*max(diff2_signal));
% 绘制信号和峰值位置
figure
plot(t, filtered_signal)
hold on
plot(t(2:end-1), diff2_signal/max(diff2_signal), 'r')
plot(t(locs+1), diff2_signal(locs)/max(diff2_signal), 'rv', 'MarkerFaceColor', 'r')
xlabel('Time (s)')
ylabel('Amplitude')
legend('Filtered signal', '2nd derivative', 'Peak locations')
```
在这个示例中,我们首先加载一个样例心电信号数据,然后使用一个带通滤波器将信号滤波到 5-15 Hz 的频率范围内。接着,我们计算信号的一阶和二阶差分,并从二阶差分信号中找到峰值位置。最后,我们绘制原始信号、二阶差分信号和峰值位置,以便对结果进行可视化。
请注意,这只是一个简单的示例,实际的心电信号峰值检测可能需要更复杂的算法和处理步骤。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)