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