Это может иметь более простое решение, чем мой текущий подход, поэтому приветствуются любые рекомендации!
У меня есть таблица MATLAB (38327x17) переменных char
/double
, импортированных из .csv с readtable()
, double
преобразованными из char
. Переменная double
в столбце 2 представляет собой временные точки с частотой дискретизации около ~ 0,02 секунды, выглядит примерно так:
char double char char char etc.
x 1.0088 y w z
x 1.0218 y w e
x 1.1017 w y z
x 1.1287 w q z
У меня также есть вектор точек времени (238x1) с частотой дискретизации 2,531 секунды:
[0; 2.531; 5.062; 7.593; ...]
Я хочу отфильтровать таблицу по вектору, эффективно понижая временные точки таблицы, т.е. извлекать 238 строк таблицы по временным точкам, которые лучше всего соответствуют каждой временной точке в векторе.
Желаемый результат:
char double char char char etc.
x 0 y w z
x 2.7816 y w e
x 5.0607 w y z
x 7.6064 w q z
(где значения максимально приближены к вектору, но не совпадают тождественно из-за несовпадения интервалов выборки). Я пробовал resample()
и downsample()
, но далеко не продвинулся. Я мог бы перебирать CSV-файл построчно и сопоставлять строки, но это кажется неэффективным.