I have trouble in doing inverse of a complex matrix. As far as I know, complex matrix is simply a two-channel matrix (CV_32FC2 / CV_64FC2).
(Written in C++) Let's say I have a matrix C:
Mat C(2, 2, CV_64FC2);
C.at<vec2d>(0,0)[0] = 1; C.at<vec2d>(0,0)[1] = 1; C.at<vec2d>(0,1)[0] = 3; C.at<vec2d>(0,1)[1] = 4; C.at<vec2d>(1,0)[0] = 2; C.at<vec2d>(1,0)[1] = -1; C.at<vec2d>(1,1)[0] = 5; C.at<vec2d>(1,1)[1] = 2;
Mat InverseMat; invert(C, InverseMat, DECOMP_SVD);
After I perform the invert function, I keep getting this error:
OpenCV Error: Assertion failed (type == CV_32F || type == CV_64F) in invert
The invert function works well with a grayscale loaded image (1 channel), but I have hard time to do inverse on complex matrix which contains real and imaginary part.
Can someone please tell me how to solve the inverse problem of a complex matrix? Preferably using DECOMP_SVD method, as I can't get desired result using DECOMP_LU or DECOMP_CHOLESKY method when I tried with a single channel image, probably because of the matter of singular matrix. Thanks.