如何使用openCv查找矩阵的奇异值之和

时间:2019-01-06 21:42:03

标签: c++ opencv svd

我正在研究一个问题,该问题需要计算矩阵的核范数,该矩阵是矩阵奇异值的总和。我的输入矩阵为M,行数为mRows,列数为mCols。以下代码段有什么问题?

float neuclearNorm(float**M, int mRows, int mCols) {
    A = cv::Mat(mRows, mCols, CV_32FC1, &M);
    float count = 0;
    cv::SVD::compute(A, w, u, vt, CV::SVD::MODIFY_A, CV::SVD::NO_UV);
    for (int i = 0; i < sizeof(w) / sizeof(w[0]); i++) {
        count += w[i];
    }
    return count;

}


int main(){
     int Rows=5,Cols=5;
     float ** Matrix=new float*[Rows];
     for(int i=0;i<Rows;i++){
          Matrix[i]=new float[Cols];
          for(int j=0;j<Cols;j++)
                cin>>Matrix[i][j];
          }
     cout<<"Neuclear norm"<<neuclearNorm(Matrix,Rows,Cols);
     return 0;
    };

0 个答案:

没有答案