1

我们使用Lapack++进行矩阵计算。其中一项功能是使用子矩阵视图;引用内存中相同位置的对象。

例子:

  LaGenMatDouble W = LaGenMatDouble::rand(3,4);
  LaGenMatDouble A = W(LaIndex(0,2), LaIndex(1,3));
  LaGenMatDouble b = W(LaIndex(0,2), LaIndex(0,0));

A 和 b 现在是 W 的子矩阵。

我怎样才能使 ba LaVectorDouble 能够用它执行一些计算?

4

2 回答 2

1

我怀疑这个例程会对数据进行深度复制:

http://lapackpp.sourceforge.net/html/classLaVectorDouble.html#be11700fe7c277501329b2d23f485630

这个 ref() 例程可以让你维护共享内存:

http://lapackpp.sourceforge.net/html/classLaVectorDouble.html#191850a7e8993a977a3a545b87dc7528

于 2009-06-24T04:14:59.237 回答
0

答案是使用 ref 函数。

LaVectorDouble b;
b.ref(W(LaIndex(0,2), LaIndex(0,0)));

所有其他函数都在复制(如构造函数、= 和复制)或提供错误的类(如带有索引的构造函数)。ref 函数正在引用内存。

于 2009-06-26T04:59:45.583 回答