Vital-Signs-Detection-and-Estimation / ImpulseDenoise.m
ImpulseDenoise.m
Raw

function [signal]=ImpulseDenoise(signal,param)

    len = length(signal);
    meanSig = mean(signal);
    strd = std(signal);


    N = param.samplerange;
    t = linspace(param.startsec,param.endsec,N);
    figure
    subplot(2,1,1)
    plot(t,signal,'b');
    title("Phase Signal")
    xlabel("time(sec)")

    for i=2:len-1
        
        b = signal(i)-signal(i-1);
        f = signal(i)-signal(i+1);
        mean_ = (signal(i-1)+signal(i+1))/2;


        if(abs(b)>meanSig+2*strd || abs(f)>4*meanSig+2*strd)

            signal(i) = mean_/2;

        end



    end


    subplot(2,1,2)
    plot(t,signal,'r');
    title("Impulse deNoised Phase Signal")
    xlabel("time(sec)")


end


% % 
% % function [denoisedSignal]=ImpulseDenoise(noisySignal)
% % 
% %     len = length(noisySignal);
% %     denoisedSignal = noisySignal;
% % 
% %     for i=3:len-2
% % 
% %         w = [denoisedSignal(i-2) denoisedSignal(i-1) denoisedSignal(i+1) denoisedSignal(i+2)];
% %         r = sort(w);
% % 
% %         mean_r = (r(2)+r(3))/2;
% % 
% %         if(denoisedSignal(i)<=mean_r)
% % 
% %             d1 = r(1)-mean_r;
% %             d2 = r(2)-mean_r;
% % 
% %         else 
% % 
% %             d1 = mean_r-r(3);
% %             d2 = mean_r-r(2);
% % 
% %         end
% % 
% % 
% %         if (d1 > mean(r) || (d2 > mean(r)))
% % 
% %             denoisedSignal(i) = mean_r;
% % 
% %         end
% % 
% % 
% %     end
% % 
% %     
% % 
% %     n = 1:len;
% %     figure
% %     subplot(2,1,1)
% %     plot(n,noisySignal,'b');
% %     subplot(2,1,2)
% %     plot(n,denoisedSignal,'r');
% %    
% % 
% % 
% % 
% % 
% % end