Я хочу реализовать синтез датчика Калмана на основе акселерометра, вектора вращения и 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](https://i.stack.imgur.com/PgRGA.png)
Проблема здесь в том, что я не могу перебрать значения для дальнейших вычислений.Потому что значение accel (i) имеет значение 2 мс, а i-й элемент в rot1 - 20 мс.Таким образом, каждая матрица датчиков из CSV имеет разные размеры, но все они происходят за один и тот же интервал времени.
На показанном рисунке это правильно, но я не знаю, как перебирать данные в одном цикле, соответствующем разным частотам выборки?
Примечание: значения зависят друг от друга (пешеходрасчет по мертвым точкам на основе вектора вращения и определения шага акселерометра).