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

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

Respuesta aceptada

Kojiro Saito
Kojiro Saito el 1 de Mayo de 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 comentarios
Kojiro Saito
Kojiro Saito el 2 de Mayo de 2023
Editada: Kojiro Saito el 2 de Mayo de 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 el 2 de Mayo de 2023
無事に行いたいことが達成できました.
どうもありがとうございます!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2020b

Community Treasure Hunt

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

Start Hunting!