MATLAB Y軸の最大値におけるX軸のあたい

조회 수: 42 (최근 30일)
優斗 森山
優斗 森山 2020년 5월 28일
답변: 優斗 森山 2020년 6월 17일
MATLABでsine関数に関する計算をおこなっています。
そこでsineの振幅の最大値を求める方法はわかるのですが、
最大値における時間(t)←x軸の値を知る方法がわかりません。
ご教示ください。
また、sine関数はくりかえされるため、一部区間における算出方法が
ありましたら、あわせてお願いいたします。

채택된 답변

Atsushi Ueno
Atsushi Ueno 2020년 5월 31일
편집: Atsushi Ueno 2020년 5월 31일
find関数を使えば、最大値における時間(t)を得る事ができます。
例として、目的のsine関数を
y = sin( ω t) = sin(4 π t)    (0 ≤ t ≤ 1)
とします。(ω=4*piの理由:複数の最大値を得る為)
% An example
t = 0:0.1:1 % [sec] (0秒から1秒まで0.1秒刻み)
y = sin(4 * pi * t) % (0秒から1秒で2周する)
>そこでsineの振幅の最大値を求める方法はわかるのですが、
my = max(y) % sineの振幅の最大値
>最大値における時間(t)←x軸の値を知る方法がわかりません。
index = find(y == my) % y(二周分)の中で、最大値と等しい部分を探す
% ここでindexに返ってくるのは条件にあったyのインデックス(何番目の値か)
mt = t(index) % 結果:mt=[0.1 0.6][s]の2個が出てくる(振幅の最大値が2か所ある為)
% yがyの最大値に等しかったインデックスをtに当て嵌めて、該当時刻mtを得る
>また、sine関数はくりかえされるため、一部区間における算出方法がありましたら、あわせてお願いいたします。
range = find(t >= 0.5 & t <= 1.0) % 0.5秒から1秒までの一部区間におけるt(=y)のインデックスを得る
trange = t(range) % 分かり易い様、t:0.5秒から1秒までの一部区間を切り出した
yrange = y(range) % 分かり易い様、y:0.5秒から1秒までの一部区間を切り出した
% 0.5秒から1秒までの一部区間におけるsineの振幅の最大値を探す
my = max(yrange) % 範囲が変わるので得られるインデックスも変わる事に注意
% 0.5秒から1秒までの一部区間において、最大値と等しい部分を探す
index = find(yrange == my)
mt = trange(index) % 結果:mt=0.6[s]のみ出てくる

추가 답변 (2개)

madhan ravi
madhan ravi 2020년 5월 28일
% An example
x = 0:pi/2:4*pi;
y = sin(x);
[PeaKs,ix]= findpeaks(y) % for negative peaks use -y
X_axis = sym(x(ix))

優斗 森山
優斗 森山 2020년 6월 17일
返事がおそくなってしまい、申し訳ありません。
お二人のご教示の結果、理解することができました。
ありがとうございました

카테고리

Help CenterFile Exchange에서 プログラミング에 대해 자세히 알아보기

태그

제품


릴리스

R2018b

Community Treasure Hunt

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

Start Hunting!