Как синхронизировать данные датчика с различной частотой дискретизации в октаве? - PullRequest
0 голосов
/ 23 апреля 2019

Я хочу реализовать синтез датчика Калмана на основе акселерометра, вектора вращения и WLAN.Я загружаю данные датчика из файла CSV для каждого датчика Android (акселерометр, вектор вращения и WLAN) с помощью dlmread.Каждый датчик имеет разные частоты дискретизации от 2 мс до 200 мс.Моя проблема в том, что я не знаю, как получить доступ к данным для реализации объединения датчиков, потому что значения не синхронизированы.

accelData = dlmread("1.csv", ",", 1, 0);

accelX = accelData(:, 15);
accelY = accelData(:, 16);
accelZ = accelData(:, 17);

rotVecData = dlmread("11.csv", ",", 1, 0);

rot1 = rotVecData(:, 15);
rot2 = rotVecData(:, 16);
rot3 = rotVecData(:, 17);
rot4 = rotVecData(:, 18);
rot5 = rotVecData(:, 19);

dtA = 0.002;#2ms
samplesA = length(accelX);
tAccel = 0:dtA:(samplesA*dtA - dtA);
dtR = dtA*5;#10ms
samplesR = length(rot1);
tRot = 0:dtR:(samplesR*dtR - dtR);

for i = 1 : samplesR
  r = [rot1(i), rot2(i), rot3(i), rot4(i), rot5(i)];

  [azimuth] = Orientation(r, 90);
  a(end+1) = rad2deg(azimuth);
end

figure
plot(tAccel, accelX, tRot, rot1)

В этом примере я мог бы построить 2 значения разных датчиков в правильном интервале времени,Вывод следующий: plottet accelerometer and rot vector

Проблема здесь в том, что я не могу перебрать значения для дальнейших вычислений.Потому что значение accel (i) имеет значение 2 мс, а i-й элемент в rot1 - 20 мс.Таким образом, каждая матрица датчиков из CSV имеет разные размеры, но все они происходят за один и тот же интервал времени.

На показанном рисунке это правильно, но я не знаю, как перебирать данные в одном цикле, соответствующем разным частотам выборки?

Примечание: значения зависят друг от друга (пешеходрасчет по мертвым точкам на основе вектора вращения и определения шага акселерометра).

...