其他分享
首页 > 其他分享> > matlab read txt

matlab read txt

作者:互联网

read txt

clc;
clear;

%ekg_raw=load('2.txt');
ekg_raw=load('20210110133815000_20210110134234000.txt');
%x=ekg_raw(:,1);
%y1=ekg_raw(:,2);




[row,col]=size(ekg_raw);

ekg=ekg_raw(1,:);
for i=2:row
    if ekg_raw(i,1) == ekg_raw(i-1,1);
        %break
        continue
    else
        ekg=[ekg;ekg_raw(i,:)];
    end
end

%ekg=ekg_raw;


%读取电压数据
fs=500;%分析频率 /Hz
%ecg=interp1(ekg(:,1),ekg(:,2),ekg(1,1):1/fs:ekg(end,1))';       


X1=ekg(:,1);
Y1=ekg(:,2);
S1=ekg(1,1);
E1=ekg(end,1);

P1=S1:1/fs:E1;
P2=fs:E1;


%读取电压数据
%ecg=interp1(ekg(:,1),ekg(:,2),ekg(1,1):1/fs:ekg(end,1))';       
ecg=interp1(X1,Y1,P1)';



%-----------------------------------------------------%
% 利用pan_tomkin算法找到R点
[map,r,delay]=pan_tompkin2021(ecg,fs,1);
    map=map';
    r=r';
    l=length(r);
    
for i=2:l;
    t(i-1,1)=(r(i)-r(i-1))/fs*1000; %求出R-R间的时间值,单位为ms
end

x=r(2:l);%  index of R waves
y=interp1(x,t,r(2):1:r(l),'spline'); %利用插值法求出以原ecg信号的采样率fs的拟合函数

figure %整个时间段内R-R时间差
plot([r(2):1:r(l)]/fs,y')
xlabel('时间/s');ylabel('R-R时间差/ms')
hold on
scatter(x/fs,t(1:l-1));

rawdata=y';
    [row,col]=size(rawdata);
    Nfft=2^(nextpow2(length(rawdata)));  % FFT数量

data=rawdata-mean(rawdata);%去直流电平
    data_fft=fft(data,Nfft);
    mag=abs(data_fft);
Pxx=mag.^2/Nfft/fs;% 功率谱密度
    f=(0:Nfft/2)'*fs/Nfft;%频率轴

figure
f_cut=0.5;%绘图截止频率/Hz,超过0.5的基本为0
plot(f(1:f_cut*fs),Pxx(1:f_cut*fs));
    xlabel('频率/Hz');
    ylabel('PSD/(ms^2/Hz)');

disp ('时域分析')
RR=mean(t);
SDNN=sqrt(var(t));
rMSSD=rms(diff(t));
    disp(['RR=',num2str(RR),' ms']);
    disp(['SDNN=',num2str(SDNN),' ms']);
    disp(['rMSSD=',num2str(rMSSD),' ms']);

disp('频域分析')
f1=0.4;%/Hz
f2=0.15;%/Hz
f3=0.04;%/Hz
TP=fs/Nfft*trapz(Pxx(1:floor(f1/(fs/Nfft))));%/ms^2
HF=fs/Nfft*trapz(Pxx(floor(f2/(fs/Nfft)):floor(f1/(fs/Nfft))));%/ms^2
LF=fs/Nfft*trapz(Pxx(floor(f3/(fs/Nfft)):floor(f2/(fs/Nfft))));%/ms^2
    disp(['TP=',num2str(TP),' ms^2']);
    disp(['HF=',num2str(HF),' ms^2']);
    disp(['LF=',num2str(LF),' ms^2']);
    disp(['LF/HF=',num2str(LF/HF)]);

        

 

标签:disp,fs,ms,raw,read,ekg,matlab,Nfft,txt
来源: https://www.cnblogs.com/herd/p/14609338.html