呼吸心跳检测matlab代码
时间: 2023-09-03 16:13:14 浏览: 168
以下是一个基于MATLAB的呼吸心跳检测代码:
```
clc;
clear all;
close all;
% 读取数据
data = load('data.txt'); % 将数据保存在 data.txt 文件中
signal = data(:,1); % 获取信号
% 绘制原始信号
figure(1);
subplot(2,1,1); plot(signal); title('原始信号');
% 预处理
fs = 1000; % 采样频率为1000Hz
time = length(signal)/fs; % 信号时长
t = 0:1/fs:time-1/fs; % 时间轴
n = length(signal); % 信号长度
f = (0:n-1)*(fs/n); % 频率轴
% 使用带通滤波器滤波
Wn = [0.5 70]/(fs/2);
[b,a] = butter(3,Wn,'bandpass');
signal_filt = filtfilt(b,a,signal);
% 绘制滤波后的信号
subplot(2,1,2); plot(signal_filt); title('滤波后的信号');
% 心跳检测
threshold = 0.6; % 阈值
[peaks,locs] = findpeaks(signal_filt,'MinPeakHeight',threshold,'MinPeakDistance',0.5*fs);
% 绘制心跳检测结果
figure(2);
subplot(2,1,1); plot(signal_filt); title('滤波后的信号');
hold on; plot(locs,peaks,'rv','MarkerFaceColor','r'); hold off;
% 呼吸检测
signal_filt_diff = diff(signal_filt);
[~,locs] = findpeaks(signal_filt_diff,'MinPeakHeight',0.05,'MinPeakDistance',4*fs);
% 绘制呼吸检测结果
subplot(2,1,2); plot(signal_filt_diff); title('一阶差分信号');
hold on; plot(locs,signal_filt_diff(locs),'rv','MarkerFaceColor','r'); hold off;
```
该代码首先读取保存在 `data.txt` 文件中的原始信号,然后使用带通滤波器滤波,接着使用 `findpeaks` 函数检测心跳和呼吸。最后绘制心跳和呼吸检测结果。
需要注意的是,该代码仅供参考,具体的参数需要根据实际情况进行调整。
阅读全文