linear Interpolation for RR interval
9 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Good morning everyone!
My goal is to use linear interpolation on the RR-interval, which was created out of an ECG signal.
The result should look similar to the following image, but with a varying frequency (that means the period of 100 Samples should vary depending on the distance from the variable locs_Rwave -> see figure 2 for an example):
and the following image shows an interval from the ECG_signal, in which the values of
- locs_Rwave(16) = 2083
- locs_Rwave(17) = 2197
- locs_Rwave(18) = 2310
are the "starting point" and "end point - 1" in which they should have the previous values of -pi and +pi.
I cutted up the for-loop to the interval from i=16:18 to make my question clear.
function [] = interpolation()
% Load the database
template= load('UnoVis_auto2012.mat');
% Extract the record of interest, from 1 to 31
record=template.unovis(1);
[totalHR, hrB2b, cECG_1, cECG_2, cECG_3, refECG] = extractHR(record);
[RR_2,RR_loc_2] = RRInterval(cECG_2,record);
[RR_difference_2 RR_location_2, locs_Rwave] = plotQRS(cECG_2);
%% The interpolation question starts here :)
% function interp1( param1, param2, param3, 'linear' )
X = [0:100];
absPi = ([0:0.01:1]*2*pi)-pi; %absPi must have the same length as X
for i = 16:18
if i==length(locs_Rwave)
break;
end
frame = (locs_Rwave(i):1:(locs_Rwave(i+1))-1)/((locs_Rwave(i+1)-locs_Rwave(i))/100); % HERE IS MY PROBLEM (or so i think)
linearInterpolation = interp1(X , absPi , frame , 'linear');
array{i} = linearInterpolation;
end
disp('done')
end
With this previous code, I obtain the cell-array - array{i} - with all values empty (aka NaN). My guess is that the parameter -frame- is the one causing me problems. The frame parameter (for i=16) bring an 1x114 double, which starts on 2083 and ends on 2196.
Can you help me out here? What am I missing?
PS: If there´s any important information I missed to share, please tell.
Thank you,
David
2 comentarios
Jeffrey Clark
el 24 de Mayo de 2022
Yes, the calculated frame must contain values in [0..100]. So didn't you want something like this?
frame = (0:100/(locs_Rwave(i+1)-locs_Rwave(i)+1):100);
Respuestas (0)
Ver también
Categorías
Más información sobre Time-Frequency Analysis 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!