Кажется, что функция синхронизации создает общие временные ряды из двух отдельных (здесь, в частности, через их объединение), а затем использует интерполяцию (здесь «линейная»), чтобы найти интерполированные значения для расстояния и угла в общих точках времени.
Пример того, как этого добиться, чтобы получить тот же вывод в октаве, что и предоставленный вами выходной файл, выглядит следующим образом.
Примечание. Сначала мне пришлось предварительно обработать входные файлы, чтобы заменить ' десятичные запятые »с точками, а затем« табуляции »с запятыми, чтобы сделать их действительными CSV-файлами.
Distance_t = csvread('input_distance.txt', 1, 0); % skip header row
Rotation_t = csvread('input_rotation_angle.txt', 1, 0); % skip header row
Common_t = union( Distance_t(:,2), Rotation_t(:,2) );
InterpolatedDistance = interp1( Distance_t(:,2), Distance_t(:,1), Common_t );
InterpolatedRotation = interp1( Rotation_t(:,2), Rotation_t(:,1), Common_t );
Output = [ InterpolatedRotation, InterpolatedDistance ];
Output = sortrows( Output, -1 ); % sort according to column 1, in descending order
Output = Output(~isna(Output(:,2)), :); % remove NA entries
(Примечание. Шаг, связанный с удалением записей NA, был необходим, потому что мы мы не указали, что мы хотели экстраполяцию во время шага интерполяции, и некоторые из результирующих значений расстояния будут вне исходного временного диапазона, который в октаве помечен как NA).