setting coefficients of particular frequency components to zero
이전 댓글 표시
Hello,
How to set the set the coefficients of particular frequency components to zero of a signal(for example coeffcients of from 1) 0.2Hz to 0.5Hz 2)0.8 to 6Hz frequency components coefficients to zero.
How to convert bakc iti into time domain after removing the frequency compoents coefficients.
Can I someone explain this with an example.
Thanks.
댓글 수: 4
Stefan
2014년 8월 6일
Nade Sritanyaratana
2014년 8월 6일
Stefan,
Can you explain what this signal looks like? Or, provide a simple test case?
You will want to cascade a filter with specific passbands/notches but how to implement this may depend on the original signal and perhaps what you want to do after processing.
Star Strider
2014년 8월 6일
You need to design two separate notch filters, then cascade them. Your resulting digital filter will filter them in the time domain, so no conversion back to the time domain will be necessary. See the documentation for the Signal Processing Toolbox for details.
Stefan
2014년 8월 6일
답변 (1개)
Chad Greene
2014년 8월 6일
fs = 10; % Hz sampling rate (I made this up, you need to fix it)
filteredSignal = bandstop_butterworth(signal_data,[.2 .5],fs,1);
plot(signal_data,'b')
hold on
plot(filteredSignal,'r')
댓글 수: 7
Chad Greene
2014년 8월 6일
Yes, you could easily do
filtered1 = bandstop_butterworth(signal_data,[.2 .5],fs,1);
finalsignal = bandstop_butterworth(filtered1,[.6 .8],fs,1);
Your final signal should be the same no matter which frequency band you filter out first.
Stefan
2014년 8월 6일
Chad Greene
2014년 8월 6일
It's because the original data has sharp corners at y=0. Sharp corners are made up of a lot of frequency components, and if you filter out some of those constituent frequencies the corners will not hold their shape. Sometimes the resulting green line will be above the original blue, other times it will be below.
Chad Greene
2014년 8월 6일
Also note that you've plotted the filtered1 signal twice instead of plotting filtered1 and finalsignal.
Stefan
2014년 8월 6일
Chad Greene
2014년 8월 6일
I can't think of any physically-reasonable methods. Think about a mass oscillating on a spring. It naturally wants to make smooth arcs as it swings, and it would take energy to stop or sharply divert the mass as it moves. Your signal abruptly stops at y=0 as if someone put energy into stopping a mass. If you remove some frequency energy from your signal you'll essentially be taking away some of the energy that it would take to stop a swinging mass. If you want a brute-force method of keeping a filtered signal from going to zero, you can end the lines of code you've already created with
finalsignal(finalsignal<0)=0;
카테고리
도움말 센터 및 File Exchange에서 Multirate Signal Processing에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!