我正在研究一个问题,该问题需要计算矩阵的核范数,该矩阵是矩阵奇异值的总和。我的输入矩阵为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;
};