Signal analysis: amplitude estimation in MATLAB

纵然是瞬间 提交于 2019-12-11 04:57:26

问题


I am trying to estimate the amplitude of a signal in MATLAB:

As can be seen, I can't simply take the max() and min() to get the amplitude. The signal continually wanders, and in any case isn't constant. However, all that I'm looking for is an average - one single figure that estimates the average amplitude of the dominant component in the figure above (which repeats eight times). Visually, it's fairly obvious what I'm trying to find out. Programatically however...

I have heard tell of 'Hilbert transform' - hilbert() - and 'fast fourier transform' - fft() - but have very little knowledge of signal analysis - and wonder if anyone might be able to steer me in the right direction, or explain how to utilise either of these functions. My data is simply a float stored in a one-dimensional array at 1000Hz.

Any help gratefully received!


回答1:


You have several options, the easiest of which would be:

  1. Use a peak detector to find local extrema. You can find several on the MathWorks File Exchange.
  2. Apply a high pass filter to remove the baseline drift, then find the absolute minimum and maximum



回答2:


In order to extract the peak-to-peak amplitude, you may first apply detrend to your dataset.



来源:https://stackoverflow.com/questions/9253701/signal-analysis-amplitude-estimation-in-matlab

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!