首页 > 解决方案 > LAPACK 数组大小和返回

问题描述

我正在使用 lapack dggglm 来解决 C++ 中的一般高斯马尔可夫线性模型 (GLM) 问题。我设计了一个循环,它执行以下操作:

B=zeros(N);P=zeros(N);L=zeros(N); X=zeros(N); Y=zeros(N); //allocating memory
for(i=0;i<100;i++)
{
   for(j=0;j<M;j++) //M<=N
   { 
       B[j]=something; //do simimar things for P, L, X, Y 
   }
   dggglm_(&row, &col, &row, B, &row, P, &row, L, X, Y, work, &lwork, &info);
}

我的问题是,对于每次迭代,我都有不同大小的矩阵(B、P、L、X、Y)。那么,以 B 为例,我可以在 for 循环之前定义一个足够大的矩阵 B 并在每次迭代时更新它的值吗?我可以假设 LAPACK 只读取 B(1 to row*col) althoug B 实际上比那长吗?

另一个问题是文件说(Y 在退出时被销毁)。这是什么意思,我是否需要在每次迭代时为 Y 重新分配内存?

标签: c++lapack

解决方案


推荐阅读