どうすれば最大振幅値を求められますか?

39 views (last 30 days)
horizon
horizon on 20 Apr 2019
Edited: Yoshio on 22 Apr 2019
以下の両矢印が表す波形の最大振幅の値を求めたいのですが、MATLABではどのようにすればいいのですか。
maxamp.png
以下のようにして、信号の包絡線を求めることはできていますが、最大振幅を求める方法を知りたいです。
t = 0:1/1000:3;
q1 = sin(2*pi*7*t).*exp(-t/2);
q2 = chirp(t,30,2,5).*exp(-(2*t-3).^2)+2;
q = [q1;q2]';
plot(t,q)
a3 = gca;
a3.XTick = sort([-3000:1000:3000 lagDiff]);
envelope(q,300)
envelop.png

Accepted Answer

Yoshio
Yoshio on 21 Apr 2019
Edited: Yoshio on 21 Apr 2019
こちらのfindpeaksを使ってみてはどうでしょうか。
最初はプラス側、次にマイナス側を見つけて、それらのピーク位置を関連づけられれば(同じ近傍波形とみなせるならば)、両側最大振幅の値が求められると思います。
また、単純にこの区間の系列波形の最大値と最小値の差で良ければ、maxminの差を取れば良いかと思います。
  4 Comments
Akira Agata
Akira Agata on 22 Apr 2019
はい。horizon様のご理解のとおり、この2つの値はそれぞれq1とq2の両側最大振幅になります。
horizon
horizon on 22 Apr 2019
ありがとうございました。

Sign in to comment.

More Answers (1)

horizon
horizon on 22 Apr 2019
ご回答いただきましてありがとうございます。
Yoshioさんのご回答について、findpeaksを使う場合だとある区間以外も含めて最大振幅を求められるのでしょうか・
findpeaksは、使うことも考えたのですが、サンプルプログラムだけではプラス側とマイナス側のピークを関連づける方法を思いつきませんでした。
また、プラス側のピークとマイナス側のピークが別の場所で見つかった場合、その差をとっても振幅は求められませんよね?
  2 Comments
Yoshio
Yoshio on 22 Apr 2019
Edited: Yoshio on 22 Apr 2019
こちらに関連する解析例があります。
今の場合
[Ppks,Plocs] = findpeaks(data)でプラス側のピーク値とその場所が求められるので、-data側にも行い、
[Mpks,Mlocs] = findpeaks(-data)
を得ます。
このPlocsとMlocsを使うと可能かと思います。ただし、これはhorizon さんが両側最大振幅をどう定義したいか、に寄ります。最大ピークと最小ピークを結ぶ波形が連続していること、とか、ピーク位置の差がXXサンプル以内等です。これをプログラム化する必要がありますので、horizon さんが分析したい信号に関する知識が必要です。
「プラス側のピークとマイナス側のピークが別の場所で見つかった場合、その差をとっても振幅は求められませんよね?」
これも、両側最大振幅をどう定義したいかに寄ると思います。
horizon
horizon on 22 Apr 2019
ご回答いただきましてありがとうございます。
誤って解答欄に書き込んでしまい、申し訳ございません。
採用時はYoshio様のご回答をcheckさせていただきます。

Sign in to comment.

Products


Release

R2017b

Community Treasure Hunt

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

Start Hunting!