フィルターのクリア

Numerical Integration of accelerometer signal

20 ビュー (過去 30 日間)
Itai Gutman
Itai Gutman 2023 年 6 月 1 日
編集済み: Mathieu NOE 2023 年 6 月 1 日
Hellow,
I did sit to stand test with single IMU on the pelvis.
I have a acceleration data from IMU, and the units are m/s^2. The sample rate was 100Hz.
I did filter (butterwarth 4th order)
fc=3; % cutoff frequency
[b,a] = butter(4,fc/(100));
filtAcc = filter(b,a,y_acceleration);
and than numerical integration by cumtrapz function and remove the drift by detrend function twice: first time to get the velocity (units are [m/s] ?) and second time to get the displacement (units are [m] ?).
vertical_velocity=cumtrapz(filtAcc);
vertical_velocity_detrend=detrend(vertical_velocity);
vertical_displacement=cumtrapz(vertical_velocity_detrend);
vertical_displacement_detrend=detrend(vertical_displacement);
In the reality the displacement of the pelvis is 0.5 [m] or 50 [cm] why I got the displacement are in range -2000 to 2000 [m]?
Thank,
  1 件のコメント
Mathieu NOE
Mathieu NOE 2023 年 6 月 1 日
編集済み: Mathieu NOE 2023 年 6 月 1 日
double integration of accel signals are always sensitive to offset, drift and other issues
the one major issue I see in your code is that your are doing the cumtrapz integration without taking care of the sampling rate Fs
use dt = 1/Fs to correct it this way
vertical_velocity=dt*cumtrapz(filtAcc);

サインインしてコメントする。

回答 (0 件)

カテゴリ

Help Center および File ExchangeAnalog Filters についてさらに検索

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by