Você está na página 1de 14

PROCESSAMENTO DE SINAIS FISIOLÓGICOS

Ano Letivo 2020-2021, Semana 11

Proposta de trabalho laboratorial

Eletrocardiografia (ECG)

Inês Campos, Maria Carolina Brás, Adriana Vale,


up201806778 up201704532 up202008703

I. ANÁLISE E PROCESSAMENTO DOS DADOS

1. Identifique na literatura a gama de valores típicos do ritmo cardíaco (em BPM


– beats per minute) para jovens e adultos. Apresente esses valores numa tabela
e, se possível, indique também valores típicos para o desvio padrão do ritmo
cardíaco em jovens e adultos, em regime estável como por exemplo, deitado, de
pé, ou de pé respirando profundamente.
Tabela 1 - Ritmo cardíaco em BPM para jovens e adultos em regime estável

Jovens Adultos

Deitado 76 ± 10 [1] 83.80 ± 15.36 [3]

Respirando profundamente 75.68 ± 14.86 [2] 79.45 ± 10.06 [3]

Em pé 78.6 ± 5.9 [5] 88.0 ± 1.7 [4]

2. Com base no número de amostras e na duração do segmento de sinal, estime a


frequência de amostragem (deverá ser um número arredondado às dezenas de
Hertz).
A frequência de amostragem é o número de amostras do sinal por segundo. Assim, para a
calcular, efetuou-se o quociente entre o número de amostras e o intervalo de tempo de duração do
sinal (Anexo II):
𝑁
𝐹𝑎 = = 999.45 𝐻𝑧
∆𝑡
Tendo-se obtido um valor igual a 100 dezenas de Hz para a frequência de amostragem.

3. Análise da evolução do ritmo cardíaco em cada um dos três registos:

a) Calcule a correlação com o sinal de que foi extraído.


Primeiramente, através da análise do gráfico do sinal ECG original, selecionaram-se,
usando as opções Zoom In e Data Cursor, os pontos de alteração entre os diferentes regimes.
Recorrendo à função find() do Matlab, foi possível encontrar as posições no vetor ECG de cada
um dos pontos anteriormente escolhidos. Assim sendo, o sinal ECG obtido foi dividido em 3

1
Trabalho Laboratorial II – Eletrocardiografia
Processamento de sinais fisiológico
porções correspondentes a cada regime estável: sentado (myecg1), deitado respirando
normalmente (myecg2) e deitado respirando lenta e profundamente (myecg3) – Anexo III. Note-
se que, apesar da função find() ter sido utilizada para obter o sinal myecg1, o mesmo não foi
possível para os outros sinais por erro do Matlab (provavelmente devido ao elevado tamanho dos
vetores analisados). No entanto, o raciocínio foi idêntico. É de acrescentar que a escala do tempo
foi ajustada para efeitos de representação gráfica.
Posteriormente, foi selecionado um protótipo do conjunto P – QRS – T de cada sinal
ECG, de forma semelhante à anterior. Para uma melhor análise de cada um dos regimes efetuados,
obtiveram-se 4 protótipos: sentado (prot1), deitado respirando normalmente (prot2), deitado
expirando lenta e profundamente (prot3) e deitado inspirando lenta e profundamente (prot4) –
Anexo IV. Repare-se que, neste caso, a escala do tempo voltou a ser ajustada para melhor
representação gráfica.
De seguida, procedeu-se ao cálculo da correlação entre cada protótipo e o sinal ECG
correspondente, usando a função conv() do Matlab. Para além disso, criou-se um vetor tempo
para cada uma das correlações implementadas, necessário para o cálculo do número de batimentos
por minuto (BPM). Por sua vez, com o intuito de destacar visualmente os picos da linha base,
estabeleceu-se um limiar e recorreu-se à função peakfinder(). Por último, verificou-se que os picos
foram corretamente identificados e que não existiam falsos picos, por exemplo, ao nível da linha
base – Anexo V.

b) Calcule a média e desvio padrão do ritmo cardíaco (em BPM) usando comandos
Matlab e construa uma tabela com os valores obtidos relativos a cada registo
myecg1, myecg2 e myecg3.

De forma a identificar a evolução do ritmo cardíaco, em BPM, ao longo de todo o registo,


efetuou-se o quociente entre o número de picos identificados e cada valor do vetor tempo
previamente criado, convertido para minutos. Com base neste vetor, calculou-se a média e o
desvio padrão do ritmo cardíaco usando os comandos do Matlab, mean e std:

Tabela 2 - Características do ritmo cardíaco de cada sinal

myecg1 myecg2 myecg3

Média 82.49 87.11 79.98

Desvio Padrão 2.59 2.31 3.49

4. Comente as diferenças entre os valores de média e desvio padrão do ritmo


cardíaco para os diferentes registos. Comente também os valores calculados,
tendo por referência os valores encontrados na questão 1.
O número de batimentos cardíacos por minuto é influenciado por inúmeros fatores, como
a posição corporal. Geralmente, o número de BPM é menor quando o indivíduo se encontra em
regime deitado, comparativamente a regime sentado ou em pé. Em decúbito dorsal, o efeito da
gravidade no corpo humano é menor, o que permite o retorno venoso de uma maior quantidade
de sangue para o coração. Desta forma, o organismo tem a capacidade de bombear uma dose
superior de sangue por batimento, o que resulta num menor número de batimentos por minuto
requeridos para satisfazer as suas necessidades [6]. Além disso, nesta posição, os músculos estão

2
Trabalho Laboratorial II – Eletrocardiografia
Processamento de sinais fisiológico
em repouso (não estão contraídos), pelo que não necessitam de uma grande quantidade de sangue
para exercerem a sua função. Por outro lado, um indivíduo sentado, apresenta um valor superior
de BPM, pelas razões opostas.
Numa inspiração profunda, os músculos do peito e do pescoço são ativados mais
significativamente, acelerando o batimento cardíaco. Na figura 2, do Anexo IV, é possível
distinguir que porções do sinal correspondem a momentos de inspiração ou expiração, sendo que,
no primeiro caso, os intervalos entre picos R dos complexos QRS são mais curtos. Por oposição,
na expiração os músculos relaxam, pelo que o batimento cardíaco diminui [7].
A respiração lenta e profunda é utilizada frequentemente como um exercício de
relaxamento, pois também causa um aumento do retorno venoso o que, como referido
anteriormente, diminui o número de BPM [8]. Ainda, uma respiração lenta e profunda permite que
as trocas gasosas sejam mais eficazes, tornando o sangue mais rico em oxigénio e diminuindo a
necessidade do bombeamento de uma grande quantidade para o resto do corpo.
Através da análise da Tabela 2, verifica-se que os valores da média do ritmo cardíaco são
superiores quando o indivíduo se encontra sentado (respiração normal) – myecg2, o que vai de
encontro ao esperado. Além disso, é possível observar que, para o indivíduo sentado a respirar
profundamente (myecg3), o valor da média do ritmo cardíaco é menor, o que também seria
expectável.
Assim, conclui-se que os valores obtidos na Tabela 2 estão de acordo com os apresentados
na Tabela 1, o que significa que o código implementado para análise do sinal ECG foi bem
sucedido.

5. Descreva duas abordagens de processamento de sinal alternativas à proposta em


3. para medir o ritmo cardíaco. Discuta vantagens e inconvenientes.

A abordagem utilizada neste trabalho experimental baseou-se na correlação cruzada entre


o protótipo do conjunto P - QRS - T e o respetivo sinal ECG. Contudo, este método possui baixa
sensibilidade ao ruído, é computacionalmente complexo e requer a segmentação manual da
informação do sinal ECG.
Existem outras abordagens de processamento de sinal alternativas para medir o ritmo
cardíaco, tais como:

• Algoritmo de Pan – Tompkins [9]

ECG Filtro Passa - Filtro Elevação ao Filtro de média


Banda derivativo quadrado deslizante

Em primeiro lugar, aplica-se um filtro passa-banda (largura de banda sugerida: 5-


15Hz), de forma a eliminar o ruído do sinal. Seguidamente, a fim de acentuar os pontos
máximos e mínimos, o sinal é derivado e elevado ao quadrado. Por fim, é aplicado um
filtro de média deslizante de modo a obter-se informação acerca da duração do complexo
QRS. Assim que a identificação do complexo QRS for corretamente executada, o ritmo
cardíaco é determinado em função da distância, em segundos, entre dois complexos QRS
consecutivos. No entanto, este método não funciona corretamente em caso de anomalias
cardíacas.

3
Trabalho Laboratorial II – Eletrocardiografia
Processamento de sinais fisiológico
• Método da transformada de Hilbert [10]

ECG 𝑥(𝑛) 𝑑[𝑥(𝑛)] 𝑦(𝑛) ℎ(𝑛) Deteção


Filtragem 𝑦(𝑛) = Transformada
𝑑𝑡 de Hilbert dos picos

Esta abordagem é executada de igual forma à mencionada anteriormente, exceto


no processo de identificação dos picos do complexo QRS: a transformada de Hilbert é
uma função ímpar, pelo que cruza o eixo dos xx sempre que existe um ponto de inflexão
no sinal original. Os picos da transformada de Hilbert conjugada verificam-se para os
valores de x para os quais o sinal original é igual a zero, entre dois pontos de inflexão
consecutivos (um positivo e outro negativo). Estes dois pontos referem-se, no sinal ECG,
aos picos R e S, respetivamente. Deste modo, é possível detetar cada pico dos complexos
QRS, correspondentes à interseção do eixo dos xx na primeira derivada do sinal ECG.
Este método permite a diferenciação entre as ondas R, T e P com elevada precisão e
minimiza problemas de linha de base e ruído.

4
Trabalho Laboratorial II – Eletrocardiografia
Processamento de sinais fisiológico
Referências
[1] https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3761735/

[2]https://www.researchgate.net/profile/L_Brilla/publication/271101805_Perspectives_on_Breathing_in_
Sports_and_Health/links/5992221fa6fdcc53b79b6517/Perspectives-on-Breathing-in-Sports-and-
Health.pdf

[3] https://journals.lww.com/md-
journal/fulltext/2018/05040/effects_of_slow_breathing_rate_on_heart_rate.44.aspx

[4] V.K. Yeragani, R. Pohl, R. Berger, R. Balon, and K. Srinivasan, “Relationship Between Age and
Heart Rate Variability in Supine and Standing Postures: A Study of Spectral Analysis of Heart Rate”

[5]https://www.researchgate.net/publication/235148723_Heart_Rate_and_Respiratory_Rate_During_Fitn
ess_Training_Obstacle_Course_Runs_and_Mass_Casualty_Simulations_-
_Performance_of_Two_Warfighter_Physiological_Status_Monitoring_Systems/figures?lo=1

[6] https://breathe.ersjournals.com/content/13/4/298

[7] https://resiliencei.com/2016/10/take-deep-breath-bad-advice/

[8] https://www.livestrong.com/article/268891-heart-rate-body-positions/

[9] https://www.robots.ox.ac.uk/~gari/teaching/cdt/A3/readings/ECG/Pan+Tompkins.pdf

[10]https://reader.elsevier.com/reader/sd/pii/S0010482501000099?token=38FB32E0CC0D92A2CF517F
D0F0D87C9EC35B260BA39E919EDA4AA2B16AF0664AD39E2290EAD1AD3CB815E99C9C672073

5
Trabalho Laboratorial II – Eletrocardiografia
Processamento de sinais fisiológico
Anexo I – Importação dos dados relativos ao ECG, para o ambiente Matlab
ficheiro='ecg.txt';
fid = fopen(ficheiro, 'r');
dados = fscanf(fid, '%f\t%f', [2,inf]);
fclose(fid);
dados=dados.';
tempo= 60* dados(:,1); % tempo em segundos
myecg=dados(:,2); % sinal ECG adquirido (total)

Anexo II – Cálculo da frequência de amostragem


% Número de amostras do sinal
N = length(myecg);
% Duração do segmento de sinal/Tempo de amostragem
delta_t = tempo(end);
% Frequência de amostragem do sinal
Fa = N/delta_t;
% Período de amostragem do sinal
Ta = 1/Fa;

6
Trabalho Laboratorial II – Eletrocardiografia
Processamento de sinais fisiológico
Anexo III – Obtenção do sinal ECG correspondente à aquisição efetuada com o indivíduo
em regime estável

• Deitado – myecg1
% Índice do limite superior da porção do sinal ECG (myecg) correspondente
à aquisição efetuada com o indivíduo deitado
pos_sup1 = find (tempo == 71.5302);

myecg1 = myecg (1:pos_sup1);


tempo1 = tempo (1:pos_sup1);

% Representação gráfica do sinal myecg1


figure (1);
subplot (3,1,1);
plot(tempo1,myecg1,'m');
axis([0 72 -1 1.5]);
title("Sinal ECG correspondente à aquisição efetuada com o indivíduo
deitado");
xlabel("Tempo (s) \rightarrow");
ylabel("Amplitude \rightarrow");

• Sentado (respiração normal) – myecg2

% Índice do limite superior da porção do sinal ECG (myecg) correspondente


à aquisição efetuada com o indivíduo sentado (respiração normal)
pos_sup2 = find (tempo == 141.2712);

myecg2 = myecg (pos_sup1 + 1:pos_sup2);


tempo2 = tempo (pos_sup1 + 1:pos_sup2) - tempo (pos_sup1 + 1);

% Representação gráfica do sinal myecg2


subplot (3,1,2);
plot(tempo2,myecg2, 'b');
axis([0 70 -1 1.5]);
title("Sinal ECG correspondente à aquisição efetuada com o indivíduo
sentado (respiração normal)");
xlabel("Tempo (s) \rightarrow");
ylabel("Amplitude \rightarrow");

7
Trabalho Laboratorial II – Eletrocardiografia
Processamento de sinais fisiológico
• Sentado (respiração lenta e profunda) – myecg3
myecg3 = myecg (pos_sup2 + 1:end);
tempo3 = tempo (pos_sup2 + 1:end) - tempo (pos_sup2 + 1);

% Representação gráfica do sinal myecg3


subplot (3,1,3);
plot(tempo3,myecg3, 'g');
axis([0 40.5 -1 1.5]);
title("Sinal ECG correspondente à aquisição efetuada com o indivíduo
sentado (respiração lenta e profunda)");
xlabel("Tempo (s) \rightarrow");
ylabel("Amplitude \rightarrow");

Figura 1 – Gráficos dos sinais ECG correspondentes à aquisição efetuada com o indivíduo em regime estável

8
Trabalho Laboratorial II – Eletrocardiografia
Processamento de sinais fisiológico
Anexo IV – Seleção de um protótipo do conjunto P – QRS – T de cada sinal ECG

• Sinal myecg1: indivíduo deitado – Protótipo 1


% Índices dos limites inferior e superior da porção do sinal myecg1
correspondente a um protótipo do conjunto P-QRS-T
prot1_pos_inf = find (tempo1 == 48.801);
prot1_pos_sup = find (tempo1 == 49.305);

prot1 = myecg1 (prot1_pos_inf:prot1_pos_sup);


tempo_prot1 = tempo1 (prot1_pos_inf:prot1_pos_sup)-
tempo1(prot1_pos_inf);

% Representação gráfica do protótipo prot1


figure(2);
sgtitle("Protótipo do conjunto P-QRS-T do sinal ECG para cada um dos
diferentes registos:");
subplot(2,2,1);
plot(tempo_prot1, prot1, 'm');
axis ([0 0.51 -0.8 1.2]);
title("Indivíduo deitado");
xlabel("Tempo (s) \rightarrow");
ylabel("Amplitude \rightarrow");

• Sinal myecg2: indivíduo sentado (respiração normal) – Protótipo 2

% Índices dos limites inferior e superior da porção do sinal myecg2


correspondente a um protótipo do conjunto P-QRS-T
prot2_pos_inf = 45762;
prot2_pos_sup = 46270;
% prot2_pos_inf = find (tempo2 == 45.7614)
% prot2_pos_sup = find (tempo2 == 46.269)

prot2 = myecg2 (prot2_pos_inf:prot2_pos_sup);


tempo_prot2= tempo2 (prot2_pos_inf:prot2_pos_sup)-
tempo2(prot2_pos_inf);

% Representação gráfica do protótipo prot2


subplot(2,2,2);
plot(tempo_prot2, prot2, 'b');
axis ([0 0.51 -0.8 1.2]);
title("Indivíduo sentado (respiração normal)");
xlabel("Tempo (s) \rightarrow");
ylabel("Amplitude \rightarrow");

9
Trabalho Laboratorial II – Eletrocardiografia
Processamento de sinais fisiológico
• Sinal myecg3: indivíduo sentado (expiração lenta e profunda) – Protótipo 3

% Índices dos limites inferior e superior da porção do sinal myecg3


correspondente a um protótipo do conjunto P-QRS-T, com complexo QRS de
maior amplitude
prot3_pos_inf = 21356;
prot3_pos_sup = 21840;
% prot3_pos_inf = find (tempo3 == 21.3552)
% prot3_pos_sup = find (tempo3 == 21.8394)

prot3 = myecg3 (prot3_pos_inf:prot3_pos_sup);


tempo_prot3= tempo3 (prot3_pos_inf:prot3_pos_sup)-
tempo3(prot3_pos_inf);

% Representação gráfica do protótipo prot3


subplot(2,2,3);
plot(tempo_prot3, prot3, 'g');
axis ([0 0.49 -0.8 1.2]);
title("Indivíduo sentado (respiração lenta e profunda - expiração)");
xlabel("Tempo (s) \rightarrow");
ylabel("Amplitude \rightarrow");

• Sinal myecg4: indivíduo sentado (inspiração lenta e profunda) – Protótipo 4

% Índices dos limites inferior e superior da porção do sinal myecg3


correspondente a um protótipo do conjunto P-QRS-T, com complexo QRS de
menor amplitude
prot4_pos_inf = 25088;
prot4_pos_sup = 25557;
% prot4_pos_inf = find (tempo3 == 25.0872)
% prot4_pos_sup = find (tempo3 == 25.5564)

prot4 = myecg3 (prot4_pos_inf:prot4_pos_sup);


tempo_prot4= tempo3 (prot4_pos_inf:prot4_pos_sup)-
tempo3(prot4_pos_inf);

% Representação gráfica do protótipo prot4


subplot(2,2,4);
plot(tempo_prot4, prot4, 'g');
axis ([0 0.47 -0.8 1.2]);
title("Indivíduo sentado (respiração lenta e profunda - inspiração)");
xlabel("Tempo (s) \rightarrow");
ylabel("Amplitude \rightarrow");

10
Trabalho Laboratorial II – Eletrocardiografia
Processamento de sinais fisiológico
Figura 2 - Protótipo do conjunto P - QRS - T do sinal ECG para cada um dos diferentes registos

11
Trabalho Laboratorial II – Eletrocardiografia
Processamento de sinais fisiológico
Anexo V – Correlação de cada protótipo com o sinal de onde foi extraído e identificação
dos picos máximos das diferentes correlações calculadas
• Indivíduo deitado : myecg1 – corr1
% prot1[-n]
prot1_inv = prot1(end:-1:1);

% Cálculo da correlação: corr1[n] = myecg1[n]*prot1[-n]


corr1 = conv(prot1_inv, myecg1);

tempo_corr1 = Ta*(0:(length(corr1)-1));

% Valor de amplitude acima do qual será feita a procura dos picos pela
função peakfinder()
limiar1 = 15;

[pos_picos1, picos1] = peakfinder(corr1, limiar1 ,1);

% Representação gráfica da correlação corr1, com os respetivos picos


máximos assinalados
figure(3);
sgtitle("Correlação do protótipo do conjunto P-QRS-T com o sinal ECG
de onde foi extraído, para cada um dos diferentes registos:");

subplot(3,1,1);
plot(corr1,'k');
hold on;
plot(pos_picos1, corr1(pos_picos1), 'v', 'markerfacecolor',[1 0 1]);
hold off;
axis([0 73000 -15 30]);
title("Indivíduo deitado");
ylabel("Correlação \rightarrow");

• Indivíduo sentado (respiração normal): myecg2 – corr2


% prot2[-n]
prot2_inv = prot2(end:-1:1);

% Cálculo da correlação: corr2[n] = myecg2[n]*prot2[-n]


corr2 = conv(prot2_inv, myecg2);

tempo_corr2 = Ta*(0:(length(corr2)-1));

% Valor de amplitude acima do qual será feita a procura dos picos pela
função peakfinder()
limiar2 = 10;

[pos_picos2, picos2] = peakfinder(corr2, limiar2 ,1);

% Representação gráfica da correlação corr2, com os respetivos picos


máximos assinalados
subplot(3,1,2);
plot(corr2,'k');
hold on;
plot(pos_picos2, corr2(pos_picos2), 'v', 'markerfacecolor',[0 0 1]);
hold off;
axis([0 71000 -15 30]);
title("Indivíduo sentado (respiração normal)");
ylabel("Correlação \rightarrow");

12
Trabalho Laboratorial II – Eletrocardiografia
Processamento de sinais fisiológico
• Indivíduo sentado (respiração lenta e profunda): myecg3 – corr3

% prot3[-n]
prot3_inv = prot3(end:-1:1);

% Cálculo da correlação: corr3[n] = myecg3[n]*prot3[-n]


corr3 = conv(prot3_inv, myecg3);

tempo_corr3 = Ta*(0:(length(corr3)-1));

% Valor de amplitude acima do qual será feita a procura dos picos pela
função peakfinder()
limiar3 = 10;

[pos_picos3, picos3] = peakfinder(corr3, limiar3 ,1);

% Representação gráfica da correlação corr3, com os respetivos picos


máximos assinalados
subplot(3,1,3);
plot(corr3,'k');
hold on;
plot(pos_picos3, corr3(pos_picos3), 'v', 'markerfacecolor',[0 1 0]);
hold off;
axis([0 41000 -15 30]);
title("Indivíduo sentado (respiração lenta e profunda)");
ylabel("Correlação \rightarrow");

Figura 3 - Correlação do protótipo do conjunto P – QRS – T com o sinal ECG de onde foi extraído, para cada um dos
diferentes registos

13
Trabalho Laboratorial II – Eletrocardiografia
Processamento de sinais fisiológico
Anexo VI – Cálculo da média e desvio padrão do ritmo cardíaco em regime estável

• Indivíduo deitado : myecg1 (bpm1_mean e bpm1_std)


num_picos1 = 1:length(pos_picos1);
bpm1 = num_picos1./ (tempo_corr1(pos_picos1)/60);
bpm1_mean = mean(bpm1);
bpm1_std = std(bpm1);

• Indivíduo sentado (respiração normal) : myecg2 (bpm2_mean e bpm2_std)


num_picos2 = 1:length(pos_picos2);
bpm2 = num_picos2./ (tempo_corr2(pos_picos2)/60);
bpm2_mean = mean(bpm2);
bpm2_std = std(bpm2);

• Indivíduo sentado (respiração lenta e profunda) : myecg3 (bpm3_mean e


bpm3_std)
num_picos3 = 1:length(pos_picos3);
bpm3 = num_picos3./ (tempo_corr3(pos_picos3)/60);
bpm3_mean = mean(bpm3);
bpm3_std = std(bpm3);

14
Trabalho Laboratorial II – Eletrocardiografia
Processamento de sinais fisiológico

Você também pode gostar