フィルターのクリア

filtering problem, need help

3 ビュー (過去 30 日間)
Ali Asghar
Ali Asghar 2020 年 2 月 1 日
コメント済み: Star Strider 2020 年 2 月 8 日
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 件のコメント
Walter Roberson
Walter Roberson 2020 年 2 月 1 日
編集済み: Walter Roberson 2020 年 2 月 1 日
bandpass uses a fir filter if it can achieve the desgign goals with one, and otherwise uses a iir filter.
Ali Asghar
Ali Asghar 2020 年 2 月 1 日
Thank you

サインインしてコメントする。

採用された回答

Star Strider
Star Strider 2020 年 2 月 1 日
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 件のコメント
Ali Asghar
Ali Asghar 2020 年 2 月 8 日
Dear, Can I find mutiple values of mav with this function?
Star Strider
Star Strider 2020 年 2 月 8 日
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.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeDigital Filter Analysis についてさらに検索

タグ

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by