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

41 ビュー (過去 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 Center および File Exchangeプログラミング についてさらに検索

タグ

製品


リリース

R2018b

Community Treasure Hunt

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

Start Hunting!