問題タブ [ublas]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - ブーストの行にイテレータを取得するにはどうすればよいですか::numeric:: ublas :: matrix?
行列の乗算に取り組んでいますが、ブースト行列の1行に反復子が必要ですか?これはできますか?
現在、イテレータを取得して進める必要があります。CPUの動作が多すぎる/最適化されていないようです...
c++ - ublasベクトルポインター
.hファイルでベクトルを定義して、ublasベクトルに値を初期化/割り当てようとしています。
次に、私の.cppファイルで:
コードは正常にコンパイルされますが、実行すると、.cppファイルの最後の行でエラーが発生します。おそらく私が見逃している非常に単純なものがありますが、私は何を理解することができません...
よろしくお願いします!:)
c++ - boost::ublas の要素単位の操作について
boost::ublas は、要素ごとの操作と一連の操作をうまくサポートしていないことがわかりました (ただし、効率はかなり高いです :)) 私はしようとしています
D = A^2 .* B^3 .* C
ここで、A、B、C はすべて同じサイズの正方行列です。演算子 ".*" は要素ごとの演算を表し、^ は行列の累乗です。boost:ublas で、私は書きました
私のプログラムには、上記のような一連の操作がたくさんありますが、ループの代わりに 1 行のコードを使用しても同じ結果を得ることができますか?
また、次のように行列またはベクトルのすべての要素に定数を割り当てることは有効ではないように思われます
boost::numeric::ublas::vector v(100); v = 0.2;
代わりに、ループを使用して割り当てを再度行う必要があります。コードを節約するためのより良い方法はありますか? 私のアルゴリズムは非常に長く、上記のような退屈な操作が非常に多くあります。私は別の数値ライブラリ Armadillo を試しました。これは演算を単純化するための良い方法を提供しますが、現在は疎行列を想定していません (私のコードを実行するのに約 10 回かかります)。
c++ - 与えられたベクトルで boost::ublas 行列を定義する
boost::ublas で指定された 1xm ベクトルから nxm 行列を定義する方法を探しています。次のコードを試します
ただし、これはベクトルを行列の最初の行にコピーするだけです。私が望むのは、v を行に複製して、M の各行を v と同一にすることです。したがって、各行をループしてコピーを 10 回実行する以外に、それを行うより良い方法はありますか? ありがとう。
c++ - ブースト行列乗算が私のものより遅いのはなぜですか?
私は1つの行列乗算を実装しましたboost::numeric::ublas::matrix
(私の完全な作業ブーストコードを参照してください)
標準アルゴリズムを使用した別のもの (完全な標準コードを参照):
これは私が速度をテストする方法です:
どちらのプログラムも、2 つの 2000 x 2000 行列を含むハードコードされたテキスト ファイルを読み取ります。両方のプログラムは、次のフラグを使用してコンパイルされました。
実装に15 秒、ブーストの実装に4 分以上かかりました。
編集:それをコンパイルした後
ikjアルゴリズムで 28.19秒、Boost で60.99 秒でした。そのため、Boost は依然としてかなり低速です。
ブーストが私の実装よりもずっと遅いのはなぜですか?
c++ - zero_vector を使用して boost / c++ で初期化するにはどうすればよいですか?
私は答えの1つを見ていました: ブーストベクトルまたはマトリックスを埋める ことですが、私はブースト(およびxcode、さらに言えば)が初めてで、ブーストzero_vectorに頭を悩ませようとしています。
答えの1つとほぼ同じだと思った簡単なプログラムを試しました:
これはコンパイルされますが、実行すると実行時エラーが発生します (実際のパスを「/PATH/TO」に置き換えます)。
ここでは、単一の main.cpp をテスト領域として使用しています。実際のプログラムでは、宣言を .h ファイルに分割し、初期化をオブジェクトの .cpp ファイルに分割しています。しかし、上記のコードは実際のプログラムと同じように失敗します。(つまり、宣言と初期化を2つのステップに分割している理由)
また、サイズ変更がすでにゼロに初期化されていることも知っています。代わりにscalar_vectorを実行するか、後で配列をリセットする必要があるかもしれません。壊れているコードを分離しようとしていました。
boost - boost :: number :: ublasのプロジェクト関数とサブレンジ関数の違いは何ですか?
つまり、間に違いはありますか
と
?
両方の形式を使用しているように見えるコードを掘り下げているので(一方と他方の明確な韻/理由はありません)、2つの違いがわかりません...チェックしたかっただけです私が何かを逃していないことを確認してください。
c++ - C ++ Boost ublasでファイルをマトリックスにストリーミングするにはどうすればよいですか?
マトリックスデータを含むファイルをブーストマトリックスに読み込もうとしています。""には、この種の演算子のオーバーロードがあるはずであり、標準ストリーム(cout)に書き込むことができます。逆に行くことの何が悪いのかわかりません。私はC++にかなり慣れていないので、ファイルストリームに関して間違った仮定をしていると思いますが、それは理にかなっているように見えました。これが私が行っているウェブページです:
http://www.boost.org/doc/libs/1_51_0/boost/numeric/ublas/io.hpp
http://www.cplusplus.com/reference/iostream/ifstream/ifstream/
これが私のコードです:
私のファイルは次のようになります。
c++ - ポインタまたは参照を使用してBoost行列を返すことには利点がありますか?
Boostを使用して行列代数を実行しています。この最適化が何かをするかどうかを理解しようとしています。オリジナル:
最適化:
基本的に、パラメーターと戻り型としてポインターを使用すると、大きなオブジェクトをコピーできないと思いました。ソースコードを読んだ後、Boostublasが基本的にこれを処理するのだろうかと思います。Boostのコードで常に参照を扱っているようです。
c++ - ブースト ublas 行列の matlab スタイルにデータを挿入する
私はデータを挿入したいと思いますが、ublas::matrix
Matlab と同じように 1 行で (または同様のもの):