filtering problem, need help
    4 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    Ali Asghar
 am 1 Feb. 2020
  
    
    
    
    
    Kommentiert: Star Strider
      
      
 am 8 Feb. 2020
            Dear 
I have a EMG signal of 30000x4. with sampling frequency of 10KHz. 
I filter noise by below code
NotchFilter = bandstop(Data01Raw,[49.9 50.1],Fs);
sEmgFilter = bandpass(NotchFilter(:,1:2),[20 500],Fs);
iEmgFilter = bandpass(NotchFilter(:,3:4),[600 2000],Fs);
Data02Filtered = [sEmgFilter iEmgFilter];
Questions
in above code bandpass or bandstop occur by which filer like is it butterwork or cheby or ellip?
 I need to fiter the signal using butterworth 2nd order. How can i do this?
Thank you 
2 Kommentare
  Walter Roberson
      
      
 am 1 Feb. 2020
				
      Bearbeitet: Walter Roberson
      
      
 am 1 Feb. 2020
  
			bandpass uses a fir filter if it can achieve the desgign goals with one, and otherwise uses a iir filter.
Akzeptierte Antwort
  Star Strider
      
      
 am 1 Feb. 2020
        Request two outputs from the bandpass and bandstop functions.  The second output is the digital filter object.  Displaying the digital filter object in your Command Window will tell you everything you need to know about it.  
For example —
Fs = 10E+3;
[NotchFilter, df] = bandstop(Data01Raw,[49.9 50.1],Fs);
then: 
df
displays: 
df = 
 digitalFilter with properties:
           Coefficients: [8×6 double]
   Specifications:
      FrequencyResponse: 'bandstop'
        ImpulseResponse: 'iir'
             SampleRate: 10.0000e+003
    StopbandAttenuation: 60.0000e+000
        PassbandRipple2: 100.0000e-003
     StopbandFrequency2: 50.0843e+000
        PassbandRipple1: 100.0000e-003
     PassbandFrequency2: 50.1000e+000
     PassbandFrequency1: 49.9000e+000
     StopbandFrequency1: 49.9157e+000
           DesignMethod: 'ellip'
 Use fvtool to visualize filter
 Use designfilt to edit filter
 Use filter to filter data
12 Kommentare
  Star Strider
      
      
 am 8 Feb. 2020
				I am not certain what you are asking.  You can have buffer break the signal up into shorter segments if you want.  
With respect to calculating the RMS value, if you have R2016a or later, you can use the movmean function instead of mean.  
This computes the RMS value over a sliding window of 200 samples: 
RMS_sigseg = sqrt(movmean(sigseg.^2, 200));
It results in a matrix the same size as the original matrix.  
Note that the code you posted gives the mean of the absolute value.  This is not the same as RMS value.  
Weitere Antworten (0)
Siehe auch
Kategorien
				Mehr zu Digital Filtering finden Sie in Help Center und File Exchange
			
	Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


