Find the envelope of an oscillating data set

14 ビュー (過去 30 日間)
Anshuman Pal
Anshuman Pal 2020 年 1 月 28 日
コメント済み: Image Analyst 2020 年 1 月 28 日
I have some 2d data, from which I have extracted some 1d data. There are two versions of this 1d data, one raw, and the other obtained after 2d interpolation. They both show what I believe to be exponential decay in amplitude. But there are unexpected oscillations as well, which are preventing me from fitting the function directly. Can someone please help me to get the (exponential) envelope of the signal?
I have attached two 2d signals in .csv format.
Raw signal:
Interpolated signal:
NB: I tried using abs(hilbert(x)) and envelope(x), but did not get anything useful since they follow the signal too closely. For example, with the interpolated data:
data, hilbert, envelope
This may be because the signal cannot broken up easily into a product of an exponential and a sinusoidal. But all I want is an estimate of the width over which the amplitude is appreciable.
Thank you.

回答 (1 件)

Image Analyst
Image Analyst 2020 年 1 月 28 日
Did you try the envelope() function?
  2 件のコメント
Image Analyst
Image Analyst 2020 年 1 月 28 日
Then maybe try findpeaks() to find the peaks and valleys and use interp1() to fill the space in between peaks and valleys with straight lines.
[peakValues, peakIndexes] = findpeaks(signal);
[valleyValues, valleyIndexes] = findpeaks(-signal);





Community Treasure Hunt

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

Start Hunting!

Translated by