필터 지우기
필터 지우기

Data Segmentation by proportion

조회 수: 2 (최근 30일)
Theodora Chivu
Theodora Chivu 2020년 12월 3일
댓글: Theodora Chivu 2020년 12월 10일
Hi. I want to segmentate an ECG signal recorded for 10 h from a database. Every signal have about 9 milion sample with a sample rate of 250 Hz, so about 3000 seconds. I want to segmentate this signal in time domain so I can have 5 beats in every signal. Every beat is 1.2 s so every signal segmentated will be 6 s and about 1500 samples. I need this for feature extraction and a cnn clasification. How can i extract every signal. I first throught i need to find every QRS complex, but in some cases the P wave will be higher in amplitude than R and findpeaks will get that as a peak. I tried getting every signal in an matrice but it exceeds maximum array size and it can be difficult for further processing.
[signal,Fs,tm]=rdsamp('08455'); %recording name have 2 leads
sig = signal(:,1); %we will wok on the first one
s= 9205760; %samples
fs = 250; %sample rate
t = floor(s/ts); %time for the recording
t_i = 0.8; %initial time for the inteval 2/3 of first 1.2 s
i = floor(t/6); %nr of signals
for j =1:i
t_f = t_i +6; %final time for the interval
m(s,j) = sig((t_i*fs):(t_f*fs)); %I wanted to get every signal in a matrice in which every column will be a signal
t_i = (t_f*ts +1)/ts; %initial time for further intervals
end

채택된 답변

Mathieu NOE
Mathieu NOE 2020년 12월 8일
hello
you can use the attached function to detect positive and negative slope threshold crossing points
this will give you the time index of the signal individual blocks
I could try it inside your code if you could share some signal data
% demo code
n=100;
x=(1:n)/n;
y= 0.5 + sin(20*x)+ 0.02*randn(1,n);
threshold = 1; %
[ind_pos,t0_pos,s0_pos,ind_neg,t0_neg,s0_neg]= crossing_V7(y,x,threshold,'linear'); % positive slope zero crossing points
plot(x,y,'b',t0_pos,s0_pos,'+r',t0_neg,s0_neg,'+g','linewidth',2,'markersize',12);grid
legend('signal','positive slope crossing points','negative slope crossing points');
  댓글 수: 1
Theodora Chivu
Theodora Chivu 2020년 12월 10일
Thank youfor your answer, but i didn't wanted to plot the line that divide the graph but store the graph divided. I ended up doing a matrix with 30000 signals x 300 samples.
y = zeros();
samp =9205760;
for i=1:a-1
poz=(1.2/c);
for j=1:poz
if i==1
poz1=1;
else poz1=poz*(i-1);
end
for l=1:d
if adn(l,1)>=poz1 && adn(l,1)<=(poz*i)
y(i,1)=1;
end
end
y(i,j+1) = s((poz*(i-1)+j),:);
end
end

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Descriptive Statistics에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by