+我正在尝试用C++实现matlab算法.
这是matlab代码:
p = 3;
K = [3 4 5; 4 5 6; 7 8 9];
e = ones(p,1);
K2 = K - (1/p)*K*ones(p) - 1/p + (1/p^2)*sum(K(:))
[V_K,D_K] = eig(K2);
Run Code Online (Sandbox Code Playgroud)
虽然这是使用OpenCV的类似C++代码:
float data[] = {3, 4, 5,
4, 5, 6,
7, 8, 9};
cv::Mat m(3, 3, CV_32F, data);
float p = K.rows;
cv::Mat CK = K - (1/p)*K*cv::Mat::ones(p,p,CV_32F) - 1/p + (1/std::pow(p,2))*cv::sum(K)[0];
cv::Mat eigenvalues(1,p,CK.type()), eigenvectors(p,p,CK.type());
cv::eigen(CK,eigenvalues,eigenvectors);
Run Code Online (Sandbox Code Playgroud)
matlab代码打印:
CK =
4.3333 5.3333 6.3333
4.3333 5.3333 6.3333
4.3333 5.3333 6.3333
0.5774 …Run Code Online (Sandbox Code Playgroud)