Vital-Signs-Detection-and-Estimation / Calculate_VSWT.m
Calculate_VSWT.m
Raw
% 
% 
% function [estimatedBR_WT, estimatedHR_WT]=Calculate_VSWT(phi_cut,peakAmp,peakFreq,param)
% 
%     
% 
%     peakFreq_level = maxFreq(peakAmp,peakFreq);
%     peakFreq_br = peakFreq_level(length(peakFreq_level));
%     estimatedBR_WT = peakFreq_br * 60;
% 
% 
% 
%     [Har2, Har3, Har4, Har5] = HarmoicFilterTrial(peakFreq_br,param);
% 
%     signal = filter(Har2,phi_cut);
%     signal = filter(Har3,signal);
%     signal = filter(Har4,signal);
%     signal = filter(Har5,signal);
% 
%     
%     [peakAmp, peakFreq]=waveletTrial(signal,param);
% 
% 
%     for i=1:length(peakAmp)
% 
%         for index=1:length(peakAmp{i})
% 
% 
%             if(peakFreq{i}(index) >= 1.9 || peakFreq{i}(index) <= 0.9)
% 
%                 peakAmp{i}(index)=0;
% 
%             end
% 
%         end
% 
%     end
% 
% 
%     for i=1:length(peakAmp)
% 
%         peakestAmps(i) = max(peakAmp{i});
%         index = peakAmp{i}==peakestAmps(i);
%         peakestFreqs(i) = peakFreq{i}(index);
% 
%     end
% 
%     peakestAmp = max(peakestAmps);
%     index = peakestAmps == peakestAmp;
%     peakestFreq = peakestFreqs(index);
% 
%     estimatedHR_WT = peakestFreq * 60;
%     
% 
% end
% 
% 
% 
% function [Hd2, Hd3, Hd4, Hd5] = HarmoicFilterTrial(brPeak,param)
%     %HARMOICFILTERTRIAL Returns a discrete-time filter object.
%     
%     % MATLAB Code
%     % Generated by MATLAB(R) 9.12 and DSP System Toolbox 9.14.
%     % Generated on: 05-Sep-2022 07:33:50
%     
%     % Elliptic Bandstop filter designed using FDESIGN.BANDSTOP.
%     
%     % All frequency values are in Hz.
%     Fs = param.Fs;  % Sampling Frequency
%     
%     N      = 10;    % Order
%     Apass  = 1;     % Passband Ripple (dB)
%     Astop  = 80;    % Stopband Attenuation (dB)
%     
%     % Construct an FDESIGN object and call its ELLIP method.
%     h2  = fdesign.bandstop('N,Fp1,Fp2,Ap,Ast', N, 2*brPeak-0.05, 2*brPeak+0.05, Apass, ...
%                           Astop, Fs);
%     h3  = fdesign.bandstop('N,Fp1,Fp2,Ap,Ast', N, 3*brPeak-0.05, 3*brPeak+0.05, Apass, ...
%                           Astop, Fs);
%     h4  = fdesign.bandstop('N,Fp1,Fp2,Ap,Ast', N, 4*brPeak-0.05, 4*brPeak+0.05, Apass, ...
%                           Astop, Fs);
%     h5  = fdesign.bandstop('N,Fp1,Fp2,Ap,Ast', N, 5*brPeak-0.05, 5*brPeak+0.05, Apass, ...
%                           Astop, Fs);
%     Hd2 = design(h2,'ellip');
%     Hd3 = design(h3, 'ellip');
%     Hd4 = design(h4,'ellip');
%     Hd5 = design(h5,'ellip');
%     
%     % [EOF]
% 
% end








function [estimatedBR_WT, estimatedHR_WT]=Calculate_VSWT(peakAmp,peakFreq)


    for i=1:length(peakAmp)

        peakestAmps(i) = max(peakAmp{i});
        index = peakAmp{i}==peakestAmps(i);
        peakestFreqs(i) = peakFreq{i}(index);

    end

    peakestAmp = max(peakestAmps);
    index = peakestAmps == peakestAmp;
    peakFreq_br = peakestFreqs(index);

    estimatedBR_WT = peakFreq_br * 60;




    for i=1:length(peakAmp)

        for index=1:length(peakAmp{i})

            modulus = mod(peakFreq{i}(index),peakFreq_br);

            if(modulus < 0.05)

                peakAmp{i}(index)=0;

            end

            if(peakFreq{i}(index) >= 1.9 || peakFreq{i}(index) <= 0.9)

                peakAmp{i}(index)=0;

            end

        end

    end

   
    for i=1:length(peakAmp)

        new_peakestAmps(i) = max(peakAmp{i});
        index = peakAmp{i} == new_peakestAmps(i);
        new_peakestFreqs(i) = peakFreq{i}(index);

    end

    peakestAmp = max(new_peakestAmps);
    index = new_peakestAmps == peakestAmp;
    peakestFreq = new_peakestFreqs(index);

    estimatedHR_WT = peakestFreq * 60;


end