Имитация MrDlab с 2 квадратными матрицами
У меня есть 2 квадратные матрицы 19x19 (a & b), и я пытаюсь использовать оператор косой черты (mrdivide) для выполнения деления таким образом, чтобы
c = a / b
Я пытаюсь реализовать это в OpenCV. Я нашел несколько человек, предлагающих использоватьcv::solve
но до сих пор я не смог найти ничего, что дает мне результат, близкий к matlab.
У кого-нибудь есть идеи, как я мог бы реализовать mrdivide с opencv?
Я пробовал следующий код:
cv::Mat mldivide(const cv::Mat& A, const cv::Mat& B )
{
//return b * A.inv();
cv::Mat a;
cv::Mat b;
A.convertTo( a, CV_64FC1 );
B.convertTo( b, CV_64FC1 );
cv::Mat ret;
cv::solve( a, b, ret, cv::DECOMP_NORMAL );
cv::Mat ret2;
ret.convertTo( ret2, A.type() );
return ret2;
}
Затем я реализовал mrdivide следующим образом:
cv::Mat mrdivide(const cv::Mat& A, const cv::Mat& B )
{
return mldivide( A.t(), B.t() ).t();
}
(редактировать: Согласно ответам это действительно дает мне правильный ответ, когда я использовал его правильно!)
Это дает мне неправильный ответ, то есть ничего подобного Matlab. По комментариям я тоже попробовал
cv::Mat mrdivide(const cv::Mat& A, const cv::Mat& B )
{
return A * B.inv();
}
Это дает тот же ответ, что и выше, но также неверно.