[770c98]: / Tools / ModelUtilities / EMGProcessing / CreateEMGEnvelope.any

Download this file

75 lines (56 with data), 2.1 kB

#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