Как найти сумму сингулярных значений матрицы с помощью openCv - PullRequest
0 голосов
/ 07 января 2019

Я работаю над проблемой, которая должна вычислить ядерную норму матрицы, которая является суммой сингулярных значений матрицы. У меня есть входная матрица как 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;
    };
...