#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);