我正在尝试使用Armadillo进行相当大的矩阵(1500 * 1125)的线性代数计算(代表图像,就像在Matlab中一样)。我编写了一个代码来使用Armadillo来计算伪逆,但是可执行文件在启动后立即崩溃。我正在使用Armadillo 3.920.2和Visual Studio 2010。
这是代码:
// ....declarations of variables, matrices etc.
// Matrix temp contains the image.
// rows and cols are the x and y size of the image matrix,
// whose gradient matrices are L_x and L_y. lambda and beta are constants.
L_x=temp.rows(1,rows-1)-temp.rows(2,rows);
L_y=temp.cols(1,cols-1)-temp.cols(2,cols);
L_x=arma::sqrt(arma::pow(L_x,2)+beta*beta);
L_y=arma::sqrt(arma::pow(L_y,2)+beta*beta);
L=-(L_x+L_y);
Alpha=lambda*L;
unsigned int alpha_size_0=Alpha.n_rows;
unsigned int alpha_size_1=Alpha.n_cols;
arma::Mat<unsigned int> I(alpha_size_0,alpha_size_1);
I.eye();
PI=arma::pinv((I+Alpha));
//.....
这是使应用程序崩溃的pinv(),因为当我评论最后一行时,没有问题。我添加了Armadillo库,取消注释了config.h中的use_lapack和use_blas行,包含了项目中的路径,并将.lib文件复制到构建可执行文件的文件夹中。可执行文件甚至不启动,或者执行此代码块之前的计算。它只是挂起。