1

行列計算にはLapack++を使用しています。機能の 1 つは、サブマトリックス ビューの使用です。メモリ内の同じ場所を参照するオブジェクト。

例:

  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 の部分行列です。

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 に答える