【値の判別】データ内​の値が、閾値より変化​した場合の判別方法

MATLABアプリを作成しています。
下図のようなデータの2列目において、
2行目から3行目にかけて値が変化しているとします。
この2行目という位置を算出することは可能でしょうか。
具体的には、
閾値を2とした場合、2行目から3行目にかけて、2→0へと変化⇒閾値2より変化したため、変化前の行数を記録 のような感じです。
よろしくお願いいたします。

 Accepted Answer

Atsushi Ueno
Atsushi Ueno on 13 Jan 2022

1 vote

data = [0 1 2 3 4 5; 2 2 0 0 0 0]'
data = 6×2
0 2 1 2 2 0 3 0 4 0 5 0
find(diff(data(:,2))) % 2列目の変化がある箇所を検索する
ans = 2

3 Comments

RK
RK on 13 Jan 2022
Edited: RK on 13 Jan 2022
ありがとうございます。
下記のように、変化(diff)の判断に幅を持たせることは可能でしょうか。
2→1の変化(幅1)では検出しない
2→0の変化(幅2)では検出する
Atsushi Ueno
Atsushi Ueno on 13 Jan 2022
Edited: Atsushi Ueno on 13 Jan 2022
変化(diff)の判断に幅を持たせる事も方向付けをする事も出来ます
data = [0 1 2 3 4 5 6 7 8 9; 2 2 0 0 1 0 2 2 0 0]
data = 2×10
0 1 2 3 4 5 6 7 8 9 2 2 0 0 1 0 2 2 0 0
df = diff(data(2,:))
df = 1×9
0 -2 0 1 -1 2 0 -2 0
find(df <= -2) % 幅2以上の立下りのみ抽出(2列目と8列目)
ans = 1×2
2 8
RK
RK on 14 Jan 2022
上記、理解出来ました。
ありがとうございました。

Sign in to comment.

More Answers (0)

Categories

Find more on 起動と終了 in Help Center and File Exchange

Products

Release

R2021a

Asked:

RK
on 13 Jan 2022

Commented:

RK
on 14 Jan 2022

Community Treasure Hunt

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

Start Hunting!