我有2个19x19平方矩阵(a和b),我正在尝试使用斜杠(mrdivide)运算符来执行除法
c = a / b
Run Code Online (Sandbox Code Playgroud)
我试图在OpenCV中实现它.我发现有一些人建议使用,cv::solve但到目前为止,我一直无法找到任何能让我得到任何接近matlab的结果的东西.
有谁知道如何用opencv实现mrdivide?
我试过以下代码:
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;
}
Run Code Online (Sandbox Code Playgroud)
然后,我按如下方式实现了mrdivide:
cv::Mat mrdivide(const cv::Mat& A, const cv::Mat& B )
{
return mldivide( A.t(), B.t() ).t();
}
Run Code Online (Sandbox Code Playgroud)
(编辑:根据答案,当我正确使用它时,这确实给了我正确的答案!)
这给了我一个错误的答案,就像matlab一样.根据评论我也尝试过
cv::Mat mrdivide(const cv::Mat& A, const cv::Mat& B …Run Code Online (Sandbox Code Playgroud)