Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 计算特征值时的误差_C++_Eigenvalue_Opencv3.2 - Fatal编程技术网

C++ 计算特征值时的误差

C++ 计算特征值时的误差,c++,eigenvalue,opencv3.2,C++,Eigenvalue,Opencv3.2,我试图找到对称矩阵的特征值,如下所示:- Mat t(2, 2, CV_32F); t.at<float>(0, 0) = 1; t.at<float>(0, 1) = 0; t.at<float>(1, 0) = 0; t.at<float>(1, 1) = 128; Mat eigVal,eigVec; eigen(t,eigVal,eigVec); t.at<float>

我试图找到对称矩阵的特征值,如下所示:-

    Mat t(2, 2, CV_32F); 
    t.at<float>(0, 0) = 1;
    t.at<float>(0, 1) = 0;
    t.at<float>(1, 0) = 0;
    t.at<float>(1, 1) = 128;

    Mat eigVal,eigVec;
    eigen(t,eigVal,eigVec);
t.at<float>(0, 0) = 4;
t.at<float>(0, 1) = 2;
t.at<float>(1, 0) = 1;
t.at<float>(1, 1) = 3;
matt(2,2,CV_32F);
t、 at(0,0)=1;
t、 at(0,1)=0;
t、 at(1,0)=0;
t、 at(1,1)=128;
Mat eigVal,eigVec;
特征值(t,eigVal,eigVec);
当我打印这个矩阵的特征值时,它给了我正确的答案

cout << eigVal.at<float>(0) << "," << eigVal.at<float>(1) << "\n";

cout
eigen
仅适用于对称矩阵(主对角线两侧值相等的矩阵)。对于非对称矩阵,您需要
特征非对称

#include <stdio.h>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

int main(int argc, char *argv[])
{
  Mat t(2, 2, CV_32F);
  t.at<float>(0, 0) = 4;
  t.at<float>(0, 1) = 2;
  t.at<float>(1, 0) = 1;
  t.at<float>(1, 1) = 3;

  Mat eigVal,eigVec;
  eigenNonSymmetric(t,eigVal,eigVec);

  cout << eigVal.at<float>(0) << "," << eigVal.at<float>(1) << "\n";

  return 0;
}
5,2