Sei sulla pagina 1di 9

Universidade Tecnolgica Federal do Paran UTFPR

Cmpus Ponta Grossa Paran Brasil

Engenharia biomdica
2014.2

Anlise de um sinal de eletrocardiograma atravs de um algoritmo de


deteco do complexo QRS
Andr Ferraz de Souza1, Deborah Deah Assis Carneiro1
aferraz.souza@gmail.com, deborahdeah@gmail.com
Universidade Tecnolgica Federal do Paran UTFPR Ponta Grossa Paran

Resumo
O eletrocardiograma um exame que monitora o comportamento dos sinais eltricos do corao. A partir desses sinais
possvel extrair uma srie de informaes sobre o comportamento do corao; desde a frequncia cardaca at
anomalias como arritmia cardaca, etc. Essas informaes podem ser detectadas atravs do processamento do sinal
eletrocardiogrfico. A partir da utilizao de um algoritmo de deteco do complexo QRS detectou-se os intervalos RR; a partir deles gerou-se o tacograma, que mostra a variabilidade da frequncia cardaca, e, posteriormente, o
espectro do sinal que pode ser utilizado para deteco de anomalias.

Palavras-chave: Oxmetro, anestesia, oximetria

1. Introduo

frequncia.

O eletrocardiograma um exame da rea mdica feito


2. O sinal de eletrocardiograma
para registrar a atividade eltrica do corao. Para
necessrio descrever a morfologia do sinal do
entender o eletrocardiograma necessrio saber como
funciona a ativao do corao, tambm conhecida como a eletrocardiograma para que seja possvel sua melhor
despolarizao cardaca. Ela tem origem no ndulo compreenso.
sinusal, o estmulo ento alcana o trio esquerdo, o
ndulo atrioventricular, o feixe de His e seus ramos, a rede
de Purkinje e, por fim, os ventrculos, extinguindo-se em
seguida. O processo de repolarizao a recuperao dos
msculos cardacos e acontece na mesma ordem da
despolarizao (FELDMAN, 2004; GUYTON; HALL,
2006).
Um sinal de eletrocardiograma sistematizado para
facilitar o seu entendimento. Cada onda recebe um nome
que ajuda a identificar cada etapa do processo de ativao
do corao.
Figura 1: Morfologia do sinal eletrocardiogrfico
A partir do eletrocardiograma possvel determinar a
Fonte: SCHWARZ, 2009
variabilidade da frequncia cardaca (VFC), que
caracteziada pelas oscilaes dos intervalos entre
batimentos cardacos consecutivos (intervalos R-R). O
A gerao do pulso eletrocardiogrfico no ndulo
tacograma o sinal composto pela sucesso temporal das sinoatrial do corao caracteriza o incio do ciclo cardaco.
duraes de intervalos R-R, que consistem do tempo entre Conforme o pulso se propaga pelos trios o potencial
o pico de uma onda R e outra (MEDEIROS et al, 2011).
eltrico se eleva formando uma onda chamada de P. Ao
A finalidade deste artigo entender o funcionamento atingir o ndulo atrioventricular, o sinal eltrico sofre um
de um algoritmo de deteco do complexo QRS presente atraso antes de se propagar pelos ventrculos. isso d-se
num sinal de eletrocardiograma, a construo do o nome de segmento PQ.
tacograma deste sinal, bem como de seu espectro de

A partir da, o sinal eltrico se propaga para os


ventrculos atravs do sistema His-Purkinje. A contrao
das fibras musculares do ventrculo d origem a uma
sequncia de ondas conhecida como complexo QRS. Q a
primeira onda que est polarizada negativamente, R a
segunda onda que est polarizada positivamente e S a
terceira onda tambm polarizada negativamente. Isso
acontece devido grande variao eltrica durante a
despolarizao ventricular.

A funo tem como entrada o vetor ECG, a frequncia


amostral fs e o tempo de visualizao do sinal na tela
(view). Como sada, a funo fornece os valores de
amplitude dos picos R e a taxa de batimento cardaco.
O algoritmo de deteco do complexo QRS encontrase nos prximos quadros, devidamente comentado pelo
autor.

Na primeira parte encontra-se a definio da funo.


Foi adicionado aos valores de sada o vetor R_R para uso
A onda T representa a repolarizao ventricular e posterior no trabalho. O encadeamento de if serve para
denota a recuperao dos ventrculos. A repolarizao verificar quantas entradas foram informadas na chamada
da funo. Caso no sejam informadas todas as variveis,
atrial geralmente est camuflada pelo complexo QRS, pois
o algoritmo utiliza valores pr-definidos.
a mesma acontece ao mesmo tempo que a despolarizao
ventricular que, por sua vez, possui uma variao eltrica
Quadro 1: Algoritmo de deteco QRS Parte 1
muito maior. A repolarizao atrial, quando aparece,
functio[R_R,R_i,R_amp,S_i,S_amp,T_i,T_
chamada de onda T atrial e possui polarizao inversa a da
amp,Q_i,Q_amp,heart_rate,buffer_plot]=
onda T.
peakdetect(ecg,fs,view) % definio
da funo
A onda U, que nem sempre aparece no
eletrocardiograma, representa a repolarizao
msculos papilares (GUYTON; HALL, 2006).

dos

O intervalo R-R num sinal de eletrocardiografia a


distncia entre o pico de uma onda R e outra, e representa
o tempo de durao de um batimento. possvel
determinar a frequncia cardaca simplesmente dividindo
sessenta segundos pela mdia dos intervalos R-R de uma
sequncia, obtendo-se a frequncia cardaca mdia em
batimentos por minuto.
A srie de intervalos R-R representa o tacograma, que
que mostra a VFC. Uma das aplicaes do tacograma a
monitorizao de alteraes no sistema nervoso autnomo
durante anestesia regional e durante anestesia geral
(TAVARES; AZEVEDO, 2004).

3. Algoritmo de deteco do complexo


QRS

%%
close all ; % close the active plots
if nargin < 3
view = 8; % on default the first 8
seconds are viewed
if nargin <2
fs = 250; %default Sampling
frequency
if nargin < 1
[FileName,PathName] =
uigetfile('*.mat');
localdir = dir;
cd(PathName);
load(FileName);
cd(localdir);
ecg = EKG1; % on default
the program uses EKG
end
end
end

Nesse trabalho foi proposto a deteco do complexo


A segunda parte consiste na declarao das variveis a
QRS de quatro sinais, codificados em um arquivo de serem utilizadas, como vetores de armazenamento das
formato .txt que contendo certos valores. Utilizando o ondas R,S,T e Q, contadores auxiliares para garantir o
software MatLab, possvel importar esses dados como funcionamento certo do algoritmo.
uma matriz.
Para anlise desse sinal, necessrio que se utilize um
algoritmo de deteco do complexo QRS. Nesse trabalho
foi utilizado o algoritmo do engenheiro biomdico
Hooman Sedghamiz, o qual pode ser encontrado na
prpria plataforma online do MatLab, o MathWorks.
Esse algoritmo composto de uma funo que detecta,
atravs de um sinal armazenado em um vetor, as ondas Q,
S, R e T de um eletrocardiograma e cria um grfico do
sinal. Alm disso, um filtro cancela os rudos atravs de
um filtro passa alta.

Quadro 2: Algoritmo de deteco QRS Parte 2


% i %% initialize
R_i = [];%save index of R wave
R_amp = []; %save amp of R wave
S_i = [];%save index of S wave
S_amp = []; %save amp of S wave
T_i = [];%save index of T wave
T_amp = [];%save amp of T wave
thres_p =[]; %for plotting adaptive
threshold
buffer_plot =[];
buffer_long=[]; % buffer for online

processing
state = 0 ; % determines the state of
the machine in the algorithm
c = 0; % counter to determine that the
state-machine doesnt get stock in T
wave detection wave
T_on = 0; % counter showing for how
many samples the signal stayed above T
wave threshold
T_on1=0; % counter to make sure its
the real onset of T wave
S_on = 0; % counter to make sure its
the real onset of S wave
sleep = 0; % counter that avoids the
detection of several R waves in a
short time
S_amp1 = []; % buffer to set the
adaptive T wave onset
buffer_base=[]; %buffer to determine
online adaptive mean of the signal
dum = 0; %counter for detecting the
exact R wave
window = round(fs/25); % averaging
window size
weight = 1.8; %initial value of the
weigth
co = 0;% T wave counter to come out of
state after a certain time
thres2_p = []; %T wave threshold
indices
thres_p_i = []; %to save indices of
main thres
S_amp1_i = []; %to save indices of S
thres
thres2_p_i = []; %to save indices of T
threshold
Q_i = []; % vectors to store Q wave
Q_amp =[]; %vectors to store Q wave
%% preprocess
ecg = ecg (:); % make sure its a
vector
ecg_raw =ecg; %take the raw signal for
plotting later
time_scale = length(ecg_raw)/fs; %
total time;
Os dados abaixo servem para o filtro utilizando a
funo butter do MatLab. Wn a frequncia de corte e N
a ordem do filtro. A funo filtfilt (b, a, ecg) executa a
filtragem digital de fase zero atravs do processamento dos
dados de entrada, ecg, em ambos os sentidos direto e
inverso. O vector b fornece os coeficientes do numerador
do filtro e a fornece os coeficientes do denominador. Essa
filtragem ajuda preservar o local no tempo em que o sinal
ocorreu exatamente, a filtragem convencional reduz o
rudo no sinal, mas atrasa o complexo QRS, como
mostrado na figura 2 (MATLAB,2014).
Quadro 3: Algoritmo de deteco QRS Parte 3

%Noise cancelation(Filtering)
f1=0.5; %cuttoff low frequency to
get rid of baseline wander
f2=45; %cuttoff frequency to discard
high frequency noise
Wn=[f1 f2]*2/fs; % cutt off based on
fs
N = 3; % order of 3 less processing
[a,b] = butter(N,Wn); %bandpass
filtering
ecg = filtfilt(a,b,ecg);

Figura 2: Comparao entre filtragem de fase zero e


filtragem convencional
O quadro a seguir consta a quarta parte do algoritmo, a
parte em que o programa faz uma varredura em todo o
vetor ecg, identifica as ondas Q,R,S e T e armazena em
buffers a fim de processar o sinal e criar um grfico a
partir do resultado armazenado no vetor buffer_plot.
Quadro 4: Algoritmo de deteco QRS Parte 4
%% define two buffers
buffer_mean=mean(abs(ecg(1:2*fs)mean(ecg(1:2*fs)))); % adaptive
threshold DC corrected (baseline
removed)
buffer_T = mean(ecg(1:2*fs));%second
adaptive threshold to be used for T
wave detection
%% start online inference (Assuming
the signal is being acquired online)
for i = 1 : length(ecg)
buffer_long = [buffer_long ecg(i)] ;
% save the upcoming new samples
buffer_base = [buffer_base ecg(i)] ;
% save the baseline samples
%% Renew the mean and adapt it to

Engenharia biomdica 2014.2

the signal after 1 second of


processing
if length(buffer_base) >= 2*fs
buffer_mean =
mean(abs(buffer_base(1:2*fs)mean(buffer_base(1:2*fs))));
buffer_T =
mean(buffer_base(1:2*fs));
buffer_base =[];
end
%% smooth the signal by taking the
average of 15 samples and add the
new upcoming samples
if length(buffer_long)>= window %
take a window with length 15 samples
for averaging
mean_online = mean(buffer_long);
% take the mean
buffer_plot =[buffer_plot
mean_online]; % save the processed
signal
%% Enter state 1(putative R wave) as
soon as that the mean exceeds the
double time of threshold
if state == 0
if length(buffer_plot) >= 3
%added to handle bugg for now
if mean_online >
buffer_mean*weight && buffer_plot(i1-window) > buffer_plot(i-window)
%2.4*buffer_mean
state = 1; % entered R
peak detection mode
currentmax =
buffer_plot(i-1-window);
ind = i-1-window;
thres_p = [thres_p
buffer_mean*weight];
thres_p_i = [thres_p_i
ind];
else
state = 0;
end
end
end
%% Locate the R wave location by
finding the highest local maxima
if state == 1 % look for the
highest peak
if currentmax >
buffer_plot(i-window)
dum = dum + 1;
if dum > 4
R_i = [R_i ind];%save
index
R_amp = [R_amp
buffer_plot(ind)]; %save index
% Locate Q wave
[Q_tamp Q_ti] =
min(buffer_plot(ind-round(0.040*fs):
(ind))
Q_ti = ind-round(0.040*fs) +
Q_ti -1;

Q_i = [Q_i Q_ti];


Q_amp = [Q_amp Q_tamp];
if length(R_amp) > 8
weight =
0.30*mean(R_amp(end-7:end));
%calculate the 35% of the last 8 R
waves
weight =
weight/buffer_mean;
end
state = 2; % enter S
detection mode state 2
dum = 0;
end
else
dum = 0;
state =
end
end
%% check weather the signal drops
below the threshold to look for S
wave
if state == 2
if mean_online <= buffer_mean
% check the threshold
state = 3;
%enter S
detection
end
end
%% Enter S wave detection state3 (S
detection)
if state == 3
co = co + 1;
if co < round(0.200*fs)
if buffer_plot(i-window-1)
<= buffer_plot(i-window) % see when
the slope changes
S_on = S_on + 1; % set a
counter to see if its a real change
or just noise
if S_on >= round(0.0120*fs)
S_i = [S_i i-window-4];
%save index of S wave
S_amp = [S_amp
buffer_plot(i-window-4)];%save index
S_amp1 = [S_amp1
buffer_plot(i-window-4)]; %ecg(i-4)
S_amp1_i = [S_amp1_i
ind]; %index of S_amp1_i
state = 4; % enter T
detection mode
S_on = 0;
co = 0;
end
end
else
state = 4;
co = 0;
end
end
%% enter state 4 possible T wave
detection
if state == 4
if mean_online < buffer_mean %

Engenharia biomdica 2014.2

see if the signal drops below mean


state = 6; % confirm
end
end
%% Enter state 6 which is T wave
possible detection
if state ==6
c = c + 1; % set a counter to
exit the state if no T wave detected
after 0.3 second
if c <= 0.7*fs
% set a double threshold based on
the last detected S wave and
% baseline of the signal and look
for T wave in between these
% two threshold
thres2 = ((abs(abs(buffer_T)abs(S_amp1(end))))*3/4 +
S_amp1(end));
thres2_p =[thres2_p thres2];
thres2_p_i =[thres2_p_i ind];
if mean_online > thres2
T_on = T_on +1; % make sure
it stays on for at least 3 samples
if T_on >= round(0.0120*fs)
if buffer_plot(i-window1)>= buffer_plot(i-window)
T_on1 = T_on1+1; %
make sure its a real slope change
if T_on1 >
round(0.0320*fs)
T_i = [T_i iwindow-11];%save index of T wave
T_amp = [T_amp
buffer_plot(i-window-11)];%save
index
state = 5; % enter
sleep mode
T_on = 0;
T_on1 = 0;
end
end
end
end
else
state= 5; % enter Sleep mode
end
end
%% this state is for avoiding the
detection of a highly variate noise
or another peak
% this avoids detection of two peaks
R waves less than half a second
if state==5
sleep =sleep+c+1;
c = 0;
if sleep/fs >= 0.400
state = 0;
sleep = 0;%look for the next
peak
end
end
% update the online buffer by
removing the oldest sample

buffer_long(1)=[];

end
end

A prxima parte do algoritmo contm os


principais valores para clculo dos batimentos
cardacos. O vetor R_R armazena os intervalos entre
cada pico R do sinal, durante todo o perodo de
processamento. A funo diff calcula a diferena dos
elementos adjacentes do vetor em questo (MATLAB,
2014).
A frequncia de batimento cardaco calculada
com a diviso do nmero de picos R (ritmo cardaco)
encontrados no sinal (R_i) e o tamanho do vetor do sinal e
multiplicado pela frequncia de amostragem (fs) e por 60
para converter para batimentos por minuto. A varivel
time_scale foi definida anteriormente no incio do
algoritmo.
Foi adicionada uma caixa de mensagem
informando qual a mdia dos intervalos R_R a fim de
observar se os clculos do algoritmo esto certos ou se
houve algum erro e outra com a mdia dos tempos do
complexo QRS para posterior anlise. Finalmente, feita o
calculo do mximo intervalor R e mnimo para deteco
de arritmia cardaca.
%% conditions
R_R = diff(R_i); % calculate the
distance between each R wave
QRS= S_i-Q_i;
heart_rate=length(R_i)/
(time_scale/60) % calculate heart
rate
avg_RR=mean(R_R);
avg_QRS = mean(QRS); %deve estar
entre 60 e 100ms
msgbox(strcat('Taxa de batimento por
minuto= ',mat2str(heart_rate)));
msgbox(strcat('Mdia R_R =
',mat2str(avg_RR/1000)));
msgbox(strcat('Mdia QRS =
',mat2str(avg_QRS)));
% compute the min max R-R wave
max_R_interval = max(R_R);
min_R_interval = min(R_R);
msgbox(strcat('Diff intervalo =
',mat2str(max_R_interval/fs)min_R_interval/fs));
%detect arythmia if there is any
irregularity
if (max_R_interval)-(min_R_interval)
> 160
msgbox('Ritmo
irregular','Arritmia detectada');
end

Engenharia biomdica 2014.2

Esse ltimo quadro equivale a plotagem do


sinal no grfico. O primeiro grfico apresenta o sinal
ECG com os pontos R,S,T e Q e o segundo apenas o
sinal sem filtragem e suavizao. Foram feitas
modificaes em relao ao algoritmo original a fim
de obter um grfico apenas com as informaes
necessrias desse trabalho e tambm traduzindo as
legendas para o portugus. Tambm um segundo
grfico produzido, o tacograma do sinal, contando
informaes de tempo entre um pico R e outro.
%% plottings
time = 1/fs:1/fs:view;
R = find(R_i <= view*fs); % determine
the length for plotting vectors
S = find(S_i <= view*fs); % determine
the length for plotting vectors
T = find(T_i <= view*fs); % determine
the length for plotting vectors
Q = find(Q_i <= view*fs); % determine
the length for plotting vectors
L1 = find(thres_p_i <= view*fs);
L2 = find(S_amp1_i <= view*fs);
L3 = find(thres2_p_i <= view*fs);
if view*fs > length(buffer_plot)
ax(1) =
subplot(211);plot(time(1:length(buffer
_plot)),buffer_plot(1:end));
else
ax(1) =
subplot(212);plot(time,buffer_plot(1:
(view*fs)));
end
hold
on,scatter(R_i(1:R(end))./fs,R_amp(1:R
(end)),'r');
hold
on,scatter(S_i(1:S(end))./fs,S_amp(1:S
(end)),'g');
hold
on,scatter(T_i(1:T(end))./fs,T_amp(1:T
(end)),'k');
hold
on,scatter(Q_i(1:Q(end))./fs,Q_amp(1:Q
(end)),'m');
legend('Sinal ECG','Onda R','Onda
S','Onda T','Onda Q');
xlabel('Tempo(s)'),ylabel('V');
axis tight; title('Zoom in to see both
signal details
overlaied');title('Sinal processado e
filtrado');
ax(2)
=subplot(211);plot(time,ecg_raw(1:
(view*fs)));title('Sinal ECG')
xlabel('Tempo(s)'),ylabel('V');
legend();
linkaxes(ax,'x');
figure;plot(R_R/1000);title('Tacograma
')
xlabel('Batimentos'),ylabel('Tempo(s)'
);
legend();

linkaxes(ax,'x');
zoom on;

4. Resultados e anlises
A seguir sero apresentados os resultados dos sinais
ECG analisados com o algoritmo. Os grficos
correspondem apenas 5 segundos do sinal para melhor
visualizao dos picos.
Aqui sero analisados o ritmo cardaco, a
frequncia cardaca e o complexo QRS. A frequncia
cardaca normal situa-se entre 60 e 100 batimentos por
minuto (bpm). O ritmo cardaco est normal quando os
intervalos RR so iguais, podendo haver pequenas
variaes porm, uma diferena entre o maior intervalo e o
menor no pode ser superior a 160ms. Quanto ao
complexo QRS, esto normais os valores entre 60 e 100ms
(FELDMAN, 2004).

4.1. ECG01A

Figura 2: Sinal ECG e complexo QRS identificado


ECG01A
De acordo com os clculos do algoritmo, temos
que a frequncia cardaca desse sinal de 59,76 bpm, o
ritmo cardaco igual a 1.004, a mdia dos tempos dos
complexos QRS 88,58ms e diferena entre o mximo
intervalo R e o mnimo igual a 380ms, sendo assim, o sinal
tem um ritmo cardaco irregular.
O tacograma do sinal, foi produzido entre o
nmero de batimentos da amostra (armazenados no vetor
R_i) e o valor em segundos da diferena de tempo entre os
picos adjacentes R_R.

Engenharia biomdica 2014.2

Figura 6: Tacograma do sinal ECG02A

Figura 3: Tacograma do sinal ECG01A

4.3. ECG03A
A partir do terceiro sinal, foram calculados os
valores de 82,67 batimentos por minuto e a mdia entre os
intervalos R_R igual a 0,7256, a mdia dos tempos dos
complexos QRS 81,23ms e diferena entre o mximo
intervalo R e o mnimo igual a 86ms, sendo assim, o sinal
tem um ritmo cardaco regular. As imagens a seguir
mostram o sinal devidamente identificado e o tacograma.

4.2. ECG02A
Para o segundo sinal, temos que a frequncia
cardaca desse sinal de 68,38 bpm, o ritmo cardaco igual
a 0,8782, a mdia dos tempos dos complexos QRS
78,38ms e diferena entre o mximo intervalo R e o
mnimo igual a 181ms, sendo assim, o sinal tem um ritmo
cardaco irregular. As imagens a seguir mostram o sinal
devidamente identificado e o tacograma.

Figura 7: Sinal ECG e complexo QRS identificado


ECG03A

Figura 4: Sinal ECG e complexo QRS identificado


ECG02A

Engenharia biomdica 2014.2

Figura 10: Tacograma do sinal ECG04A


Figura 8: Tacograma do sinal ECG03A

5. Consideraes finais

4.4. ECG04A

Neste artigo podemos ver a importncia do


processamento de sinais na rea mdica. Utilizando de um
software acessvel possvel gerar grficos dos sinais de
um eletrocardiograma e fornecer para um profissional da
sade para que o mesmo faa as concluses sobre o
paciente.

No ltimo sinal, foram calculados os valores de


84,10 batimentos por minuto e a mdia entre os intervalos
R_R igual a 0,7135, a mdia dos tempos dos complexos
QRS 88,31ms e diferena entre o mximo intervalo R e o
mnimo igual a 69ms, sendo assim, o sinal tem um ritmo
Com um algoritmo de deteco do complexo QRS
cardaco regular. As imagens a seguir mostram o sinal
possvel calcular os tempos essenciais para a anlise do
devidamente identificado e o tacograma.
funcionamento do corao de uma pessoa. Comparando
com intervalos de tempo comuns para um corao sadio,
possvel que se detecte uma possvel doena a partir desse
exame.

O eletrocardiograma tem imenso benefcio para o setor


mdico, no quesito monitoramento de pacientes. Porm,
preciso que se tenha conhecimento bsico sobre o
funcionamento biolgico dos batimentos cardacos para
que se faa a correta leitura dos dados no aparelho.
Nesse trabalho, observamos o ritmo do batimento
cardaco analisando todo o sinal do eletrocardiograma por
um determinado tempo. Com os intervalos de tempo entre
um pico R e outro, foi possvel calcular a mdia dos
batimentos cardacos.

Figura 9: Sinal ECG e complexo QRS identificado


ECG04A

A anlise do complexo QRS essencial para anlise


morfolgica do corao. Com esse sinal, possvel
identificar se os trios e ventrculos esto funcionando
como deveriam.

Engenharia biomdica 2014.2

Referncias
GUYTON, A.C.;HALL, J.E. Tratado de fisiologia
mdica. Elsevier Editora Ltda. Rio de Janeiro RJ,
2006
FELDMAN, J; GOLDWASSER, G.P.
Eletrocardiograma: recomendaes para a sua
interpretao. Revista da SOCERJ Out/Nov/Dez
2004.
MEDEIROS, T.F.L. et al. Classificao de arritmias
utilizando sinais de variabilidade da frequncia
cardaca e o algoritmo prediction by partial
matching. Centro de Informtca, Universidade
Federal de Pernambuco UFPE.

MATLAB, Butterworth filter design. Disponvel em


www.mathworks.com/help/signal/butter.html. Acesso
em Novembro de 2014.
MATLAB, Zero-phase digital filtering. Disponvel em
www.mathworks.com/help/signal/ref/filtfilt.html.
Acesso em Novembro de 2014.

TAVARES, M.C.;AZEVEDO, F.M. Algoritmo para


deteco precisa da contrao ventricular cardaca
visando determinao da VRC intraoperatria. IV
Congresso Brasileiro de Computao CBComp
2004

Engenharia biomdica 2014.2

Potrebbero piacerti anche