@LLlmoster

Как сравнить два вектора? Разной размерности?

Здравствуйте,

Прошу помочь с поиском метода сравнения.
Имеется
1) набор показаний некоторого датчика на длительном интервале времени, Показания снимаются поминутно.
2) Некий шаблон показаний, сообщающий о критичной ситуации, представляющий собой набор значений датчика за 5 минут, т.е. (val1,val2,val3,val4,val5)

Критичная ситуация - когда показания датчика за последние 5 минут совпадают с шаблоном с некоторой погрешностью. Для сравнения данных за последние 5 минут с шаблоном использую метод наименьших квадратов (МНК).

Однако ситуация аналогичная шаблону может воспроизвестись и на 4 минутах и на 6и - когда одно из шаблонных значений val будет короче\длительнее по времени, например.

Вопрос - каким образом можно сравнить вектора размерности N и N-1 или N и N-2 по аналогии с МНК?

Спасибо
  • Вопрос задан
  • 2364 просмотра
Пригласить эксперта
Ответы на вопрос 1
@AlexSku
не буду отвечать из-за модератора
В MatLab'е есть такая функция subspace(A, B), которая вычисляет линейную зависимость (угол) между векторами разной размерности. Не знаю, подойдёт ли, но вот её код:
% Compute orthonormal bases, using SVD in "orth" to avoid problems
% when A and/or B is nearly rank deficient.
A = orth(A);
B = orth(B);
%Check rank and swap
if size(A,2) < size(B,2)
   [A,B] = swap(A,B); 
end
% Compute the projection according to [1].
B = B - A*(A'*B);
% Make sure it's magnitude is less than 1.
theta = asin(min(ones(superiorfloat(A,B)),norm(B)));
end

function [B, A] = swap(A, B)
end
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы