Armadillo Library:pinv()崩溃了可执行文件

时间:2014-12-11 16:07:37

标签: image-processing lapack blas armadillo

我正在尝试使用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文件复制到构建可执行文件的文件夹中。可执行文件甚至不启动,或者执行此代码块之前的计算。它只是挂起。

0 个答案:

没有答案