MATLAB Y軸の最大値におけるX軸のあたい
41 views (last 30 days)
Show older comments
MATLABでsine関数に関する計算をおこなっています。
そこでsineの振幅の最大値を求める方法はわかるのですが、
最大値における時間(t)←x軸の値を知る方法がわかりません。
ご教示ください。
また、sine関数はくりかえされるため、一部区間における算出方法が
ありましたら、あわせてお願いいたします。
0 Comments
Accepted Answer
Atsushi Ueno
on 31 May 2020
Edited: Atsushi Ueno
on 31 May 2020
find関数を使えば、最大値における時間(t)を得る事ができます。
例として、目的のsine関数を
とします。(ω=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]のみ出てくる
0 Comments
More Answers (2)
madhan ravi
on 28 May 2020
% 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))
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!