フィルターのクリア

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 Center および File ExchangeDescriptive Statistics についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by