ecgdemowinmax.m
function Filtered=ecgdemowinmax(Original, WinSize)
%initialising
variables
WinHalfSize = floor(WinSize/2);
WinHalfSizePlus = WinHalfSize+1;
WinSizeSpec = WinSize-1;
FrontIterator = 1;
WinPos = WinHalfSize;
WinMaxPos = WinHalfSize;
WinMax = Original(1);
OutputIterator = 0;
%
Finding the postion of the largest value in window
for LengthCounter = 0:1:WinHalfSize-1
if Original(FrontIterator+1) > WinMax
WinMax = Original(FrontIterator+1);
WinMaxPos = WinHalfSizePlus +
LengthCounter;
end
FrontIterator=FrontIterator+1;
end
%
if the first point is the highest, set ouput 1
if WinMaxPos ==
WinHalfSize
Filtered(OutputIterator+1)=WinMax;
else
Filtered(OutputIterator+1)=0;
end
OutputIterator = OutputIterator+1;
%
search next half of signal
for LengthCounter = 0:1:WinHalfSize-1
if Original(FrontIterator+1)>WinMax
WinMax=Original(FrontIterator+1);
WinMaxPos=WinSizeSpec;
else
WinMaxPos=WinMaxPos-1;
end
if WinMaxPos == WinHalfSize
Filtered(OutputIterator+1)=WinMax;
else
Filtered(OutputIterator+1)=0;
end
FrontIterator = FrontIterator+1;
OutputIterator = OutputIterator+1;
end
for FrontIterator=FrontIterator:1:length(Original)-1
if Original(FrontIterator+1)>WinMax
WinMax=Original(FrontIterator+1);
WinMaxPos=WinSizeSpec;
else
WinMaxPos=WinMaxPos-1;
if WinMaxPos < 0
WinIterator =
FrontIterator-WinSizeSpec;
WinMax = Original(WinIterator+1);
WinMaxPos = 0;
WinPos=0;
for WinIterator = WinIterator:1:FrontIterator
if
Original(WinIterator+1)>WinMax
WinMax = Original(WinIterator+1);
WinMaxPos = WinPos;
end
WinPos=WinPos+1;
end
end
end
if WinMaxPos==WinHalfSize
Filtered(OutputIterator+1)=WinMax;
else
Filtered(OutputIterator+1)=0;
end
OutputIterator=OutputIterator+1;
end
WinIterator = WinIterator-1;
WinMaxPos = WinMaxPos-1;
for LengthCounter=1:1:WinHalfSizePlus-1
if WinMaxPos<0
WinIterator=length(Original)-WinSize+LengthCounter;
WinMax=Original(WinIterator+1);
WinMaxPos=0;
WinPos=1;
for WinIterator=WinIterator+1:1:length(Original)-1
if Original(WinIterator+1)>WinMax
WinMax=Original(WinIterator+1);
WinMaxPos=WinPos;
end
WinPos=WinPos+1;
end
end
if WinMaxPos==WinHalfSize
Filtered(OutputIterator+1)=WinMax;
else
Filtered(OutputIterator+1)=0;
end
FrontIterator=FrontIterator-1;
WinMaxPos=WinMaxPos-1;
OutputIterator=OutputIterator+1;
end
No comments