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

47 visualizzazioni (ultimi 30 giorni)
優斗 森山
優斗 森山 il 28 Mag 2020
Risposto: 優斗 森山 il 17 Giu 2020
MATLABでsine関数に関する計算をおこなっています。
そこでsineの振幅の最大値を求める方法はわかるのですが、
最大値における時間(t)←x軸の値を知る方法がわかりません。
ご教示ください。
また、sine関数はくりかえされるため、一部区間における算出方法が
ありましたら、あわせてお願いいたします。

Risposta accettata

Atsushi Ueno
Atsushi Ueno il 31 Mag 2020
Modificato: Atsushi Ueno il 31 Mag 2020
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]のみ出てくる

Più risposte (2)

madhan ravi
madhan ravi il 28 Mag 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))

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

Tag

Prodotti


Release

R2018b

Community Treasure Hunt

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

Start Hunting!