Наименьшие квадраты подходят для рутирования времени в Matlab - PullRequest
0 голосов
/ 18 августа 2010

Я хотел бы знать, есть ли в Matlab процедура наименьших квадратов для масштабирования шаблонного сигнала во измеренный сигнал во времени.Допустим, мой шаблон является сигналом ок.1 секунда, но соответствующая часть измерения составляет 1,2 секунды.Теперь я хочу, чтобы мой шаблон также занимал 1,2 секунды.Конечно, можно просто перемасштабировать шаблон за несколько шагов, выполнить взаимную корреляцию с сигналом для каждого шага и найти максимум.Это, однако, резко замедлило бы мою программу.Для lsqcurvefit от Matlab нужны два вектора одинаковой длины, а длина одного из векторов - это именно то, что я хочу изменить.У кого-нибудь есть идея?Спасибо!

1 Ответ

0 голосов
/ 19 августа 2010

Вы на самом деле пробовали простой fminsearch функциональный подход? Это может быть не так медленно, как вы думаете.

например. (не проверено - только для иллюстрации)

x=template; y=data;
fn=@(p)sum(( x(:)-y( 1+max(0,min(length(y),floor([0:(length(x)-1)]-p(1)).*p(2))) ) ).^2)
b=fminsearch(fn,[0 1]); % [offset, scale]

вам, вероятно, нужно настроить пределы и т. Д.

Если это не подходит, вы также можете взглянуть на панель инструментов CPM (хотя она может быть слишком сложной для ваших нужд) http://www.cs.toronto.edu/~jenn/alignmentStudy/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...