Merging individual waves into a single wave as a synthetic ECG
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Tomas
el 11 de Mzo. de 2025
Respondida: Aravind
el 13 de Mzo. de 2025
Hello everyone :)
I created individual ECG waves (P wave, QRS complex, and T wave, which is identical to the P wave) using symbolic variables and the Fourier series. However, I am struggling to merge these waves into a single waveform—it jumps around unpredictably, and I generally don’t know how to proceed. :(
my code is here:
close all;clear all; clc;
%P wave (T wave)
T = 1
f = 1/T
omega = 2*pi*f
syms t k
c=0
a_0 = (1/pi) * int((-t^2), t, c, c + 1);
a_n = (1/pi)*int(-t^2 * cos(k*t),t,c,c+1);
b_n = 0;
FS_P = a_0/2 + symsum(a_n*cos(k*t)+b_n*sin(k*t),k,1,1)
FS_P = 4*FS_P
four = subs(FS_P)
%number of repetitions
N = 1
ezplot(four,0:6.3*N)
grid on
%QRS complex - first part
syms t k x
c=0
a_0 = 0
a_n = 0
b_n = 1/pi * int(t*sin(k*t),x,c,c+2*pi)
FS_QRS = a_0/2 + symsum(a_n*cos(k*t)+b_n*sin(k*t),k,1,1000)
FS_QRS = 2*FS_QRS
four = subs(FS_QRS)
N=4
ezplot(four)
%QRS complex - second part
syms t k x
c=0
a_0 = 0
a_n = 0
b_n = 1/pi * int(-t*sin(k*t),x,c,c+2*pi)
FS_QRs = a_0/2 + symsum(a_n*cos(k*t)+b_n*sin(k*t),k,1,1000)
FS_QRs = -2*FS_QRs
four = subs(FS_QRs)
ezplot(four)
I try to simply add these signals but it doesnt work :(
0 comentarios
Respuesta aceptada
Aravind
el 13 de Mzo. de 2025
To combine the individual ECG components (P wave, QRS complex, and T wave) into a single waveform, you need to properly align these components in time and ensure they are accurately scaled. Here's a general approach to do this:
1) Define Each Component: Ensure each wave component is defined over its specific time interval, as the P wave, QRS complex, and T wave occur at different times during a cardiac cycle.
2) Time Shifting: Introduce a time shift for each wave to appear in sequence rather than overlapping or jumping. You can apply time shifts to each component using the "subs" function, like this: "subs(FS_component, t, t - shift_amount)". For more information on the "subs" function, visit: https://www.mathworks.com/help/symbolic/sym.subs.html. In the ECG cycle, the P wave is first with no time shift, followed by the QRS complex, and then the T wave. To achieve the time shifting, you might do something like:
% Example for time shifting
P_wave = subs(FS_P, t, t - 0); % Starts at t = 0
QRS_complex1 = subs(FS_QRS1, t, t - 1); % Shifted to start at t = 1
3) Scaling: Ensure the P wave, QRS complex, and T wave are scaled appropriately, as ECG components have different amplitudes and durations.
4) Combine the Waves: After scaling and shifting, sum the waveforms to create the complete ECG waveform.
% Combine the wave components
ECG_waveform = P_wave + QRS_complex1 + QRS_complex2;
Additionally, consider experimenting with the number of terms in the Fourier series to balance accuracy and computational efficiency.Incorporating these factors should help you successfully combine the different waves to generate a synthetic ECG waveform.
I hope this answers your question.
0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Waveform Generation en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!