--- a +++ b/Tools/ModelUtilities/EMGProcessing/CreateEMGEnvelope.any @@ -0,0 +1,75 @@ +#ifndef _CREATE_EMG_ENVELOPE_ANY_ +#define _CREATE_EMG_ENVELOPE_ANY_ + + +#class_template CreateEmgEnvelope (BandPassLowFreq, BandPassHighFreq, LowPassFreq, NormFactor, C3DFolder, Label, t) { + + AnyFloat Norm = iffun(eqfun(1.0*NormFactor,0),1.0,1.0*NormFactor); + + + AnyInt EndFrame =C3DFolder.Header.FirstFrameNo-1+(C3DFolder.Header.LastFrameNo-C3DFolder.Header.FirstFrameNo+1)* C3DFolder.Header.NoAnalogSamplesPer3DFrame; + AnyFloatVar tStart = C3DFolder.Header.FirstFrameNo/C3DFolder.Header.VideoFrameRate; + AnyFloatVar tEnd = C3DFolder.Header.LastFrameNo/C3DFolder.Header.VideoFrameRate; + + AnyInt AnalogData=EndFrame-C3DFolder.Header.FirstFrameNo; + AnyFloat Time=tStart+(iarr(0,AnalogData)*(tEnd-tStart)/AnalogData); + AnyVar SampleFreq= (AnalogData)/(tEnd-tStart); + + AnyFunButterworthFilter BandPassFilter = + { + //z0 = ; + AutomaticInitialConditionOnOff = On; + FilterForwardBackwardOnOff = On; + N = 2; + Fs = .SampleFreq; + Fc = {BandPassLowFreq,BandPassHighFreq}; + //W = {1/(0.5*SampleFreq)*BandPassLowFreq, 1/(0.5*SampleFreq)*BandPassHighFreq}; + //W = {1/(0.5*.SampleFreq)*.BandPassLowFreq}; + Type = BandPass; + }; + AnyFunButterworthFilter LowPassFilter = + { + //z0 = ; + AutomaticInitialConditionOnOff = On; + FilterForwardBackwardOnOff = On; + N = 2; + Fs = .SampleFreq; + Fc = {LowPassFreq}; + //W = {1/(0.5*SampleFreq)*LowPassFreq}; + Type = LowPass; + }; + AnyFloat BandPassFiltered = BandPassFilter(C3DFolder.Analog.Data.Label); + + AnyFloat Flipped = abs(BandPassFiltered); + + AnyFloat EMGEnvelope = LowPassFilter(Flipped)/Norm; + + + + AnyFunInterpol Interpol = + { + Type = PiecewiseLinear; + T = .Time; + Data = {.EMGEnvelope}; + //FileName = ""; + //FileErrorContinueOnOff = Off; + }; + + AnyVar mEMG = Interpol(t)[0]; + + AnyFunInterpol InterpolRaw = + { + Type = PiecewiseLinear; + T = .Time; + Data = {.C3DFolder.Analog.Data.Label}; + //FileName = ""; + //FileErrorContinueOnOff = Off; + }; + + AnyVar mEMGRaw = InterpolRaw(t)[0]; + + + +}; + +#endif \ No newline at end of file