Filter Selection for Noisy Signal

조회 수: 7 (최근 30일)
C. Robinson
C. Robinson 2018년 3월 26일
댓글: Star Strider 2018년 3월 27일
Hello,
I am filtering a noisy signal that has a carrier frequency of 800 Hz, but was sampled at a very high frequency, ~250 kHz. I generated the following code, and it filters the signal, but produces a start-up transient (which doesn't filter the beginning of the data). It may just be a feature of the first order filter that I am using (which has a tau). Are there any other filters available that could accomplish my goal (filtering all of the data w/o a transient)? I attached 3 pictures: the first is the entire signal (zoomed out); the second is of the start up transient, and the third is of a portion of the signal that shows I am filtering it (at least in the time domain).
Fc = 800; % filter corner (Hz)
Wc = 2*pi*Fc; % filter corner (rad/sec)
tau = 1/Wc; % filter time constant (sec)
% First order lag
% 1
% G(s) = _____________
% tau*s + 1
num = [1];
den = [tau 1];
printsys(num,den); % analog filter
% Data sampled at 249,600 Hz
Ts = 4.0064e-06
% Convert analog filter to digital
[b,a] = c2dm(num,den,Ts);
printsys(b,a,'z');
den = [a(1) a(2)];
num = [b(1) b(2)];
test = filter(num,den,data);
figure; plot(data); hold on; plot(test, 'r')

채택된 답변

Star Strider
Star Strider 2018년 3월 26일
If you have the Signal Processing Toolbox, use the filtfilt (link) function instead of filter.
  댓글 수: 4
C. Robinson
C. Robinson 2018년 3월 27일
편집: C. Robinson 2018년 3월 27일
When I tried filtfilt before, my input wasn't of type double, and that was the reason for me not getting a desirable response. I attached two plots; the one entitled Filtered Signal 3 displays filter vs. filtfilt, and the one entitled Filtered Signal 4 displays the filtfilt response on top of the noisy signal (no unwanted transient). I was able to do it with a first order filter. Thanks for your help! I really appreciate it.
Star Strider
Star Strider 2018년 3월 27일
As always, my pleasure!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Digital Filtering에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by