2006
DOI: 10.1007/11760191_86
|View full text |Cite
|
Sign up to set email alerts
|

Adaptable Noise Reduction of ECG Signals for Feature Extraction

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
10
0

Year Published

2008
2008
2011
2011

Publication Types

Select...
4
1

Relationship

0
5

Authors

Journals

citations
Cited by 7 publications
(10 citation statements)
references
References 1 publication
0
10
0
Order By: Relevance
“…In the modeling application, [29] had shown that a learning of a function that [time ma1 ma2] = textread('data/noises_ma.txt','%f %f %f'); random_noise = randn (1,size(time,1))'/5; %data files data_full_length = size(time,1); data_train_start = wInput; data_train_end = train_length; data_test_start = train_length + wInput; data_test_end = train_length + test_length; % -layer (1).node x = 1:data_full_length; ECG_clean = ecg1; wn1 = 0.5*(rand(data_full_length,1)-0.5*ones(data_full_length,1)); pw1 = 1/2 * sin(2*pi*x*1/360*60)'; ECG_noisy = ecg1 + ma1 + wn1 + bw1 + pw1 + em1; %assign data input_data = ECG_noisy; %(1:data_train_end+layer(1).node+1); reference_data = ECG_clean; %(1:data_train_end+layer(1).node+1); %% Normalization dmin = min( min(input_data), min(reference_data)); dmax = max( min(input_data), max(reference_data)); input_data = normalization(input_data,dmin,dmax); reference_data = normalization(reference_data,dmin,dmax); %% Initialize the parameter last_layer = size(layer,2); input_length = layer(1).node; layer (1).weight (1:layer(2).node) = 1; %always kept as 1 layer (1).output = zeros (1,layer(1).node); layer (1).bias = 0; %rand(); %no bias for first layer for i=2:size(layer,2)-1, layer(i).weight = rand(layer(i).node,layer(i-1).node)-0.5; layer(i).output = zeros (1,layer(i).node); layer(i).bias = rand (1,layer(i).node)-0.5; end %layer(total_layer).input (1:layer(total_layer-1).node) = 0; layer(last_layer).weight = rand(layer(last_layer).node,layer(last_layer-1).node)-0.5; layer(last_layer).output = zeros (1,layer(last_layer).node); layer(last_layer).bias = rand (1,layer(last_layer).node)-0.5; error(1) = 0; %% Learning tic; for i=1:iteration, %iter = i for jj=data_train_start:data_train_end, j = ceil((data_train_end-wInput). *rand(1,1))+wInput; X = input_data(j-wInput+1:j)'; cof = wavelet(W, L, X); layer (1).output = cof( Ainput(WaveParaChoice).len ); reference = reference_data(j-layer(last_layer).node+1:j)'; for k=2:last_layer, for m=1:layer(k).node, layer(k).weight_sum(m) = sum(layer(k-1).output. *layer(k).weight(m,:))-layer(k).bias(m); layer(k).output(m) = activation_function(layer(k).weight_sum(m)); end %m end %k output_train(j-layer(last_layer).node+1:j) = layer(last_layer).output; error(j-layer(last_layer).node+1:j) = referenceoutput_train(j-layer(last_layer).node+1:j); layer_old = layer; layer(last_layer).delta = error(jlayer(last_layer).node+1:j) .…”
Section: Chapter 8: Discussion and Conclusionmentioning
confidence: 99%
See 4 more Smart Citations
“…In the modeling application, [29] had shown that a learning of a function that [time ma1 ma2] = textread('data/noises_ma.txt','%f %f %f'); random_noise = randn (1,size(time,1))'/5; %data files data_full_length = size(time,1); data_train_start = wInput; data_train_end = train_length; data_test_start = train_length + wInput; data_test_end = train_length + test_length; % -layer (1).node x = 1:data_full_length; ECG_clean = ecg1; wn1 = 0.5*(rand(data_full_length,1)-0.5*ones(data_full_length,1)); pw1 = 1/2 * sin(2*pi*x*1/360*60)'; ECG_noisy = ecg1 + ma1 + wn1 + bw1 + pw1 + em1; %assign data input_data = ECG_noisy; %(1:data_train_end+layer(1).node+1); reference_data = ECG_clean; %(1:data_train_end+layer(1).node+1); %% Normalization dmin = min( min(input_data), min(reference_data)); dmax = max( min(input_data), max(reference_data)); input_data = normalization(input_data,dmin,dmax); reference_data = normalization(reference_data,dmin,dmax); %% Initialize the parameter last_layer = size(layer,2); input_length = layer(1).node; layer (1).weight (1:layer(2).node) = 1; %always kept as 1 layer (1).output = zeros (1,layer(1).node); layer (1).bias = 0; %rand(); %no bias for first layer for i=2:size(layer,2)-1, layer(i).weight = rand(layer(i).node,layer(i-1).node)-0.5; layer(i).output = zeros (1,layer(i).node); layer(i).bias = rand (1,layer(i).node)-0.5; end %layer(total_layer).input (1:layer(total_layer-1).node) = 0; layer(last_layer).weight = rand(layer(last_layer).node,layer(last_layer-1).node)-0.5; layer(last_layer).output = zeros (1,layer(last_layer).node); layer(last_layer).bias = rand (1,layer(last_layer).node)-0.5; error(1) = 0; %% Learning tic; for i=1:iteration, %iter = i for jj=data_train_start:data_train_end, j = ceil((data_train_end-wInput). *rand(1,1))+wInput; X = input_data(j-wInput+1:j)'; cof = wavelet(W, L, X); layer (1).output = cof( Ainput(WaveParaChoice).len ); reference = reference_data(j-layer(last_layer).node+1:j)'; for k=2:last_layer, for m=1:layer(k).node, layer(k).weight_sum(m) = sum(layer(k-1).output. *layer(k).weight(m,:))-layer(k).bias(m); layer(k).output(m) = activation_function(layer(k).weight_sum(m)); end %m end %k output_train(j-layer(last_layer).node+1:j) = layer(last_layer).output; error(j-layer(last_layer).node+1:j) = referenceoutput_train(j-layer(last_layer).node+1:j); layer_old = layer; layer(last_layer).delta = error(jlayer(last_layer).node+1:j) .…”
Section: Chapter 8: Discussion and Conclusionmentioning
confidence: 99%
“…*layer_old(k+1).weight,1); clear delta_tmp; for m=1:layer(k-1).node, %expanding dimention by repeat for calc next line delta_tmp(:,m) = layer(k).delta; end %m layer(k).weight = layer_old(k).weight + learning_rate * output_tmp . * delta_tmp; layer(k).bias = layer_old(k).bias + learning_rate * (-1) * layer(k).delta; end %k end %j subplot(totalplot,1,1); plot(i,top) title('Noise-free ECG');xlabel('Sample');ylabel('Amplitude (mV)');grid on; subplot(totalplot,1,2); plot(i,mid) title('Noisy ECG');xlabel('Sample');ylabel('Amplitude (mV)');grid on; subplot(totalplot,1,3); plot(i,bot) title('Filtered ECG');xlabel('Sample');ylabel('Amplitude (mV)');grid on; noisy = calcSNR(input_data(1:data_test_end),reference_data(1:data_test_end),dat a_test_start+wInput,data_test_end-1,'data/atr_103.txt') filtered = [permute(Xe -xfir(Seq{1,1},Seq{1,2},Xo,Ext), [2,1,3]), ... permute (Xo,[2,1,3] …”
Section: Chapter 8: Discussion and Conclusionmentioning
confidence: 99%
See 3 more Smart Citations