解析区間の指定方法について

25 visualizzazioni (ultimi 30 giorni)
Sho
Sho il 1 Mag 2023
Commentato: Sho il 2 Mag 2023
下に解析対象のサンプルデータをお示しします.
ある物体の加速度を示しており,
加速後,だいたい一定の速度でしばらく進み,減速するような波形となっています.
速度がほぼ一定の区間を指定する為に,
開始点:最大の加速度の20%の加速度となった点
終了点:最小の加速度(減速時)の20%に達した点
の条件でデータの範囲を指定したいと思っております.
だいたい下記の赤線グラフの水色線で示した範囲になります.
方法ご教授いただければ幸いです.よろしくお願いいたします.
load('data.mat');
plot(a)

Risposta accettata

Kojiro Saito
Kojiro Saito il 1 Mag 2023
いくつかやり方はありますが、find関数でfind(x, n)である条件のn番目の点を見つけられるので、これを使ってみたら簡単かと思います。
load('data.mat')
plot(a)
% 加速度の最大値の20%以下の最初の点 (n=1)
xStart = find(a <= max(a)*0.2, 1)
xStart = 41
% 加速度の最小値の20%以下の最初の点 (n=1)
xEnd = find(a <= min(a)*0.2, 1)
xEnd = 337
% 開始点と終了点の線を描画
xline([xStart xEnd], 'r')
% 開始点と終了点のデータを抽出
b = a(xStart:xEnd);
plot(b)
  5 Commenti
Kojiro Saito
Kojiro Saito il 2 Mag 2023
Modificato: Kojiro Saito il 2 Mag 2023
>diff(b <= max(b)*0.2)での出力結果を見ますと,0から1に切り替わる点(1から0の点ではなく)のみfind関数で発見できれば,上記の指定ができそうかと思ったのですが,そのようなことは可能でしたでしょうか?
diffの結果をプロットしてみると
plot(diff(b <= max(b)*0.2))
加速度が最大値の20%より大きいところから20%以下になるところで-1、20%以下から20%より大きくなるところで+1の結果になっています。この+1を見つける方法で検出できませんか。
なお、diff関数は要素2マイナス要素1が要素1に格納されるので、おっしゃるとおり1フレームずれるので+1をする必要がありました。
xStart = find(diff(b <= max(b)*0.2) == 1, 1) +1
Sho
Sho il 2 Mag 2023
無事に行いたいことが達成できました.
どうもありがとうございます!

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Logical in Help Center e File Exchange

Tag

Prodotti


Release

R2020b

Community Treasure Hunt

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

Start Hunting!