Как найти наименьший квадрат между двумя матрицами в MATLAB?

#python #matlab #feature-extraction #sift #hessian-matrix

Вопрос:

Какова замена в MATLAB следующей строки фрагмента кода на python? Из реализации Python для извлечения функций SIFT

  x = -lstsq(hessian, gradient, rcond=None)[0]
 

если

гессенский = [-0.001 -9.042 -9.491;-9.042 -2.345 -7.983;-9.491 -7.983 -7.269] и градиент = [1.6 6.1 9.3]

Ниже приведено то, что в настоящее время реализовано в MATLAB, но дает ошибку локализации для извлечения функций SIFT

 [U,S,V] = svd(hessian); %singular value decomposition for eigenvectors 
T=S;
T(S~=0) = 1./S(S~=0);  
invH = V .* T' .* U'; %inverse hessian
x = - invH.*gradient;
 

Ответ №1:

 x = numpy.linalg.lstsq(A, B)[0]
 

является ли решение линейного уравнения Ax=B. Если определено больше или меньше, он возвращает решение наименьших квадратов.

В MATLAB вы вычисляете это решение с помощью

 x = AB;
 

Смотрите документацию.

Чтобы явно использовать метод наименьших квадратов, используйте , это обычно полезно только для разреженных матриц lsqr :

 x = lsqr(A, B);