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

以下の両矢印が表す波形の最大振幅の値を求めたいのですが、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

 채택된 답변

Yoshio
Yoshio 2019년 4월 21일
편집: Yoshio 2019년 4월 21일

1 개 추천

こちらのfindpeaksを使ってみてはどうでしょうか。
最初はプラス側、次にマイナス側を見つけて、それらのピーク位置を関連づけられれば(同じ近傍波形とみなせるならば)、両側最大振幅の値が求められると思います。
また、単純にこの区間の系列波形の最大値と最小値の差で良ければ、maxminの差を取れば良いかと思います。

댓글 수: 4

Akira Agata
Akira Agata 2019년 4월 21일
追加でコメントさせて頂きます。
Yoshioさん回答のとおり、もし単純にこの区間の系列波形の最大値と最小値の差で良ければ、maxminの差(=peak2peak )を取れば大丈夫です。
もし包絡線を取ったうえで、ある時刻における両側最大振幅を求める必要があれば、例えば記載頂いたサンプルプログラムを例にとると、以下のようにすれば良いかと思います。
[up,lo] = envelope(q,300);
maxAmplitude = peak2peak(up-lo);
horizon
horizon 2019년 4월 22일
Agata様ご回答いただきましてありがとうございます。
こちらを実行すると、maxAmplitudeで「1.9975 1.7707」という2つの値が出力されるのですが、これはq1の最大振幅が「1.9975」とq2の最大振幅が「1.7707」という理解で正しいでしょうか。
Akira Agata
Akira Agata 2019년 4월 22일
はい。horizon様のご理解のとおり、この2つの値はそれぞれq1とq2の両側最大振幅になります。
horizon
horizon 2019년 4월 22일
ありがとうございました。

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

horizon
horizon 2019년 4월 22일

0 개 추천

ご回答いただきましてありがとうございます。
Yoshioさんのご回答について、findpeaksを使う場合だとある区間以外も含めて最大振幅を求められるのでしょうか・
findpeaksは、使うことも考えたのですが、サンプルプログラムだけではプラス側とマイナス側のピークを関連づける方法を思いつきませんでした。
また、プラス側のピークとマイナス側のピークが別の場所で見つかった場合、その差をとっても振幅は求められませんよね?

댓글 수: 2

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

댓글을 달려면 로그인하십시오.

카테고리

제품

릴리스

R2017b

질문:

2019년 4월 20일

편집:

2019년 4월 22일

Community Treasure Hunt

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

Start Hunting!