Fitting a damping function to a sinusoidal response

4 ビュー (過去 30 日間)
Diogo Carvalho
Diogo Carvalho 2020 年 1 月 31 日
回答済み: Star Strider 2020 年 1 月 31 日
I'm attempting to fit an exponential damping function to a sinusoidal wave by iterating zeta values.
However, it seems I can never get it to properlly 'ride' along the peaks, meaning it always crosses the response function (pic)
As I understand, the damping function looks like exp(-zeta*wn*t). I have estimated the value of wn and I have all values of time.
The function code looks like this:
xi1 = 0.01;
y = exp(-xi1*wn1*(time1-4.3))-0.6568;
plot(time1-4.3,Response1)
hold on
plot(time1-4.3,y)
hold off
grid on
I subtract 0.6568 to have the damping function begin on the first peak.

回答 (2 件)

Image Analyst
Image Analyst 2020 年 1 月 31 日
Try using findpeaks(), and then just pass the peak locations into fitnlm(), like in my attached demo.

Star Strider
Star Strider 2020 年 1 月 31 日

カテゴリ

Help Center および File ExchangeMeasurements and Feature Extraction についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by