У меня есть несколько векторов экспериментальных данных, которые мне нужно массажировать, например:
{
{0, 61237, 131895, 194760, 249935},
{0, 61939, 133775, 197516, 251018},
{0, 60919, 131391, 194112, 231930},
{0, 60735, 131015, 193584, 249607},
{0, 61919, 133631, 197186, 250526},
{0, 61557, 132847, 196143, 258687},
{0, 61643, 133011, 196516, 249891},
{0, 62137, 133947, 197848, 251106}
}
Каждый вектор является результатом одного цикла и состоит из пяти чисел, которые являются временами, в которые объект проходит каждый из пяти датчиков. В течение интервала измерения скорость объекта постоянна (интервалы между датчиками различны, поскольку расстояния между датчиками неодинаковы). От одного прогона к следующему расстояние между датчиками остается неизменным, но скорость объекта будет немного отличаться от одного прогона к следующему.
Если бы датчики были идеальными, каждый вектор должен был быть просто скалярным кратным любого другого вектора (пропорционально отношению их скоростей). Но на самом деле каждый датчик будет иметь некоторый «джиттер» и срабатывать рано или поздно на какое-то небольшое случайное количество. Я пытаюсь проанализировать, насколько хороши сами датчики, т. Е. Сколько "дрожания" в измерениях, которые они мне дают?
Так что я думаю, что мне нужно сделать следующее. К каждому вектору я должен масштабировать его, а затем добавить, а затем немного сместить вектор (добавляя или вычитая фиксированное количество для каждого из его пяти элементов). Затем StandardDeviation
каждого столбца будет описывать количество «шума» или «дрожания» в этом датчике. Величина, на которую масштабируется каждый вектор, и величина, на которую сдвигается каждый вектор, должна быть выбрана, чтобы минимизировать стандартное отклонение столбцов.
Мне показалось, что Mathematica, вероятно, имеет хороший инструментарий для выполнения этой задачи, на самом деле я думал, что мог бы найти ответ с помощью Standardize[]
, но, похоже, он ориентирован на обработку списка скаляров, а не списка списки, как у меня (или, по крайней мере, я не могу понять, применить ли это к моему делу здесь).
Так что я ищу некоторые подсказки относительно того, какие библиотечные функции я мог бы использовать для решения этих проблем, или, возможно, подсказку, которая может понадобиться мне для самостоятельного расщепления алгоритма. Возможно, часть моей проблемы в том, что я не могу понять, где искать - вот что у меня есть проблема «обработки сигналов», или проблема манипулирования данными или интеллектуального анализа данных, или проблема минимизации, или, может быть, это относительно стандартная проблема статистическая функция, о которой я раньше просто не слышал?
(В качестве бонуса я хотел бы иметь возможность контролировать функцию взвешивания, используемую для оптимизации этого масштабирования / сдвига; например, в моих данных выше я подозреваю, что у датчика № 5 есть проблемы, поэтому я хотел бы подогнать данные только учитывать масштабирование датчиков 1-4 при масштабировании / сдвиге)