MATLAB Answers

How many ways to determine signal frequency?

27 ビュー (過去 30 日間)
Tim
Tim 2011 年 12 月 27 日
Hi,
Does anyone have idea on how to determine signal frequency?
I am a first year graduate student in biomedicine and previously studied some general engineering, not really very versed in mathematics. We have lots of data measured from human to analysis, including EEG, heart pulse and others.
I would like to know what is the appropriate method to determine the frequency of a signal? For example, if you know a person’s heart is beating regularly which a man could count, how to count it with machine?
Since I just started working in this area, I would like to gather as much information as possible to do a comparison. For example, I heard from people that Discrete Fourier Transform might be used to determine frequency. DFT is of course in the undergraduate curriculum, and I know the method is simply to find out the frequency with the maximum magnitude.
But what about wavelet transform? I frequently saw its name associated with image processing, but most of the signals we process, such as EEG, are 1-D rather than 2-D image data. Does wavelet also apply to 1-D data? Can it be used for frequency determination?
And what about other types of transforms such as discrete cosine/sine transform_ITALIC TEXT_ and Hankel transform? I would very much like to know how many methods already exist there.
And what about the most naïve methods such as counting peak-to-peak distance, and so on?
Sincerely wish someone could give a survey on this topic, particularly for 1-D data.
Tim

  0 件のコメント

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

回答 (4 件)

Naz
Naz 2011 年 12 月 27 日
I would recommend you to start from Wiki and read a little about each topic to get a general idea of how the methods apply. Regarding the frequency: Fourier transform of a signal gives you a frequency spectrum (content) of a signal. In addition, phase spectrum might be also important in EEG, which can be also obtained from Fourier transform. You can use FFT (fast fourier transform) built in function to do that.

  1 件のコメント

Tim
Tim 2011 年 12 月 27 日
Naz,
I knew Fourier methods works; but besides it, does other methods work?
Wavelet
cosine/sine transform
z transform
Hankel transform
?
Tim

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


bym
bym 2011 年 12 月 27 日
If your data is sampled unevenly, Lomb's method can help:

  1 件のコメント

Tim
Tim 2011 年 12 月 27 日
proecsm,
Great. Thanks for this suggestion.
Tim

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


Honglei Chen
Honglei Chen 2011 年 12 月 27 日
Hi Tim,
Here is my opinion on this issue and I certainly could be wrong.
I would say Fourier transform, cosine/sine transform and Z transform are essentially the same for your application. If your goal is to get the frequency, then Hankel transform may not serve that purpose.
Wavelet can be used too. However, unless your signal changes frequency through time, it may not provide much benefit compared to Fourier transform.
You can certainly do zero crossing, or peak to peak, analysis but unless you know that your signal is periodic and how many zeros/peaks in each period, you will have difficulty to translate that information to frequency itself.

  3 件のコメント

Tim
Tim 2011 年 12 月 27 日
Honglei,
Do you have any experience with Goertzel algorithm, Chirp transform and alike?
Tim
Honglei Chen
Honglei Chen 2011 年 12 月 27 日
Tim,
They are similar to Fourier transform but offer some unique benefits compared to the original Fourier transform. Specifically, if you have some a priori knowledge about what the frequency is, they can be helpful.
Here is a good article on this subject
http://www.eetimes.com/design/embedded/4006427/A-DSP-algorithm-for-frequency-analysis
HTH
Tim
Tim 2011 年 12 月 28 日
Honglei,
Thanks, I will have a look.
Tim

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


star
star 2012 年 9 月 14 日
編集済み: star 2012 年 9 月 14 日
Dear Tim,
I am feeling how do you feel about frequency domain analysis :) Because when I was trying to handle with my data in the course of my MSc. thesis time, I faced with this subject.
As far as I know there are three main frequency domain analysis methods. Fourier, Lomb and Wavelet...
It is always better to start with a sample&simple data, then read some basic simple texts, books or letters about them. For the Fourier Analysis, I suggest this book:
Moreover, to understand lomb, I suggest you to start from wiki and sample data to investigate by MatLab father :)
and wiki
For Wavelet, there is a really useful toolbox of MatLab. Here:
My prof. always says that "work hard to make easy :)"

  0 件のコメント

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

Community Treasure Hunt

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

Start Hunting!

Translated by