
MATLAB Y軸の最大値におけるX軸のあたい
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
優斗 森山
am 28 Mai 2020
Beantwortet: 優斗 森山
am 17 Jun. 2020
MATLABでsine関数に関する計算をおこなっています。
そこでsineの振幅の最大値を求める方法はわかるのですが、
最大値における時間(t)←x軸の値を知る方法がわかりません。
ご教示ください。
また、sine関数はくりかえされるため、一部区間における算出方法が
ありましたら、あわせてお願いいたします。
0 Kommentare
Akzeptierte Antwort
Atsushi Ueno
am 31 Mai 2020
Bearbeitet: Atsushi Ueno
am 31 Mai 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 Kommentare
Weitere Antworten (2)
madhan ravi
am 28 Mai 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 Kommentare
Siehe auch
Kategorien
Mehr zu 等高線図 finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!