しきい値100から行​を遡り、10以上とな​ったframeを特定​する

3 views (last 30 days)
Shogo
Shogo on 26 Aug 2020
Commented: Shogo on 28 Aug 2020
大変お世話になります。
しきい値100から行を遡り、10以上となったframeを特定したく、
以下のコードを作成してみたのですが、上手くいきませんでした。何か良きアイディアがあれば教えて頂ければ幸いです。
A = GRFy>=100; % 100N以上を列ベクトルにする
Data = find(~A_exceed_100N)  % 反転させる?
[~,idxA] = min(Data)
以下の方法で立ち上がり位置を特定しようとしています。
①列ベクトルABCが以下のようにあるとする
②しきい値100とする
③100に到達したframeから行を遡り、10以上となったframeを特定する
(この場合、10.9)
Data =
0
0
0
15
16
10
0
0
0
9.2
10.9
12.2
13.6
15.1
16.6
18.3
20.155053
98.312417
103.010992

Accepted Answer

Shunichi Kusano
Shunichi Kusano on 27 Aug 2020
いろんなやり方がありそうですが、素直にやるとこんな感じになるかと思います。
  1. 100を超えた位置を検出
  2. 10を超えた位置を検出
  3. 2の中から1に一番近いものを検出
% N以上となった位置のインデックスを取得
idx100 = idx_go_over_N(Data, 100) % 100以上
idx10 = idx_go_over_N(Data, 10) % 10以上
% 距離を計算
dist = idx100 - idx10;
dist(dist<0) = 100; % idx100以上のものは検知しないよう大きい値に置換
[~,mini] = min(dist); % idx100に一番近いidx10を抽出
idx10_100 = idx10(mini); % 元データでのインデックスに振りなおす
Data(idx10_100) % 10.9
function idx = idx_go_over_N(array,N)
b = array > N;
diff_b = [0; diff(b)] == 1;
idx = find(diff_b);
end
  1 Comment
Shogo
Shogo on 28 Aug 2020
Kusano様
サンプルコードを作成して頂きありがとうございます!
また大変わかりやすくご説明して頂き重ねて感謝申し上げます!
こちらを素に作成作させて頂きます。

Sign in to comment.

More Answers (0)

Products

Community Treasure Hunt

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

Start Hunting!