OpenCV 有一個exp(inMat, outMat)函式回傳一個矩陣,其中每個單元格 (i,j) 是exp(inMat.at<>(i, j))。
是否有一個函式可以實際回傳矩陣的指數(即 e^A)?
在 MATLAB 中,函式是expm(A)。
uj5u.com熱心網友回復:
沒有函式,但是,可以將矩陣分解為特征值并使用該exp(inMat, outMat)函式,即,
void expm(const Mat& m0, Mat& m1)
{
Mat eval, evec;
cv::eigenNonSymmetric(m0, eval, evec);
Mat eveci = evec.t().inv();
Mat exp_eval;
cv::exp(eval, exp_eval);
m1 = evec.t() * Mat::diag(exp_eval) * eveci;
}
用法示例:
double a[] = {0, 1, -3, 4};
Mat m0(2, 2, CV_64FC1, a);
Mat m1(2, 2, CV_64FC1);
cout << "Matrix m0 : \n" << m0 << "\n";
expm(m0, m1);
cout << "Matrix m1 : \n" << m1 << "\n";
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/345435.html
