Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Savitzky-Golay filter

73 views
Skip to first unread message

Mike

unread,
Mar 12, 2005, 5:41:08 AM3/12/05
to
Hi All,

I want to calculate the instantaneous frequency of real signals using
hilbert transform. i've seen many posts suggest to not use the "diff"
function because it's very sensitive to noises [some of my signals
are contanemated with high noises], and suggest to use
"Savitzky-Golay filter" . could any one tell me how to use this
filter to calculate the instantaneous frequency.

I would be highly appreciated to anyone can give me any advice.

Thank you

Mike

David B. Chorlian

unread,
Mar 14, 2005, 12:55:20 PM3/14/05
to

>Hi All,

You should filter your signals _before_ you attempt to estimate the
instantaneous frequency. In order for instantaneous frequency to be
meaningful, the signal should be band-limited so its bandwidth is less
than one octave.
After you have used unwrap(angle(hilbert(band-limited-signal))) to get
a time-series of instantaneous phases, you could then use interp1(...,
'pchip') to get a monotonic version of the time-series of instantaneous
phases, and then use Savitzky-Golay to get a smooth derivative of the
phases to get the instantaneous frequency. If Savitzky-Golay is not
in Matlab itself, I believe there is code for in on the Mathworks web
site.

>Thank you

>Mike
--
David B. Chorlian
Neurodynamics Lab SUNY/HSCB
chor...@cns.hscbklyn.edu
dav...@panix.com

Mike

unread,
Mar 15, 2005, 12:26:46 AM3/15/05
to
Hello David,

I highly appreciate your answer, thank you very much.

Because i don't have a solid background in Signal Processing, I would
be grateful if the following points are more explained.

* the number of samples of my signals is relativly high. do i still
to use the command "interp1" ?

* There is a command in matlab for Savitzky-golay filter,which is
"sgolayfilt(.)". this command does smooth my signals. do i need to
use the "diff" command on the smoothed signals to get the
instantanous freq. or there's another command to do that.

once again, thank you very much for your answers.

Mike

mic

unread,
Mar 15, 2005, 2:30:34 AM3/15/05
to
<http://www.mathworks.com/access/helpdesk/help/toolbox/curvefit/ch_data8.html>

i hope it helps
any way the filter just estimates using polynom
and it is running in window length for the data.
instead for example avereging mean window you can estimate each
window using polynom.
actualy the coeffcient calculated before and then only matrix
genereted after this only multipications are done with sliding window

mic

unread,
Mar 15, 2005, 2:31:56 AM3/15/05
to

Jianwen Luo

unread,
Mar 15, 2005, 3:53:56 AM3/15/05
to

Mike

unread,
Mar 15, 2005, 9:15:55 PM3/15/05
to
Hi All,

maybe this is a silly question, [i feel it is not "maybe" :-(], but
still i can't understant how to use the command "sgalay" instead of
using "diff".

in the mean time, i would like to express my deep thanks to all who
contributed to my queries.

Thank you

Mike
Australia.

Jianwen Luo wrote:
>
>
> See <http://www.mathworks.com/matlabcentral/fileexchange/loadFileList.do?objectType=search&criteria=savitzky>
>

0 new messages