問題タブ [matrix]

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.

0 投票する
2 に答える
1617 参照

math - n 部分グラフを介してすべてのパスを列挙する行列演算

私は、隣接行列として与えられた n-partite (無向) グラフを持っています。たとえば、次のようになります。

このマトリックスに適用できる一連のマトリックス操作があるかどうかを知りたいです。これにより、このグラフのすべてのパス (長さ n、つまりすべてのパーティションを通る) を「リスト」するマトリックスが得られます。上記の例では、パス a->b->d および a->c->d があります。したがって、結果として次のマトリックスを取得したいと思います。

最初のパスにはノード a、b、d が含まれ、2 番目のパスにはノード a、c、d が含まれます。必要に応じて、次のように、結果のマトリックスにすべて 0 の行が含まれる場合があります。

ありがとう!

PS私は推移閉包を計算するためのアルゴリズムを見てきましたが、これらは通常、2つのノード間にパスがあるかどうかのみを示し、どのノードがそのパス上にあるかを直接示しません。

0 投票する
10 に答える
87667 参照

c++ - C++ で行列を作成する適切な方法

グラフの隣接行列を作成したい。matrix[x][y]範囲をチェックしないため、形式の配列を使用するのは安全ではないことを読んだので、stl のベクトル テンプレート クラスを使用することにしました。マトリックスに格納する必要があるのはブール値だけです。だから私の質問は、使用std::vector<std::vector<bool>* >*するとオーバーヘッドが多すぎる場合、またはマトリックスのより簡単な方法と、それを適切に初期化する方法があるかどうかです。

編集:素早い回答をありがとう。もちろん、ポインターは必要ないことに気付きました。行列のサイズは最初に初期化され、プログラムの最後まで変更されません。これは学校のプロジェクト用なので、技術的にはパフォーマンスはそれほど重要ではありませんが、「いい」コードを書けばよいでしょう。STL を使用しても問題ありません。ブーストのようなものを使用することは、おそらく高く評価されていません。

0 投票する
6 に答える
51374 参照

algorithm - 正半正定値行列を生成するための単純なアルゴリズム

正のランダム半正定行列を生成したい。私はアルゴリズムを探しています。より好ましくは、C、matlab、Java、または任意の言語でのアルゴリズムの単純な実装を探しています。

0 投票する
3 に答える
4065 参照

opengl - OpenGL 射影行列

ビューアーとその投影面を取得する方法と、作成する必要がある投影ポイントを正確に計算する方法について質問があります。

元。ビューアは原点にあり、負の Z 方向を見ています。z = -2 での投影面。ポイント (-6,1,-4)。

同様の三角形の使用について話している Web サイトや、それを乗算する行列を持っている Web サイトを見たことがあります。私にとっての問題は、どちらかを設定する方法がわからないことです。

私の視聴者のポイントは、原点(0、0、0、1)にあるように見えると思います。透視投影マトリックスを検索すると、このようなマトリックスを設定しているサイトを見つけました。

1 0 0 0
0 1 0 0
0 0 0
0 0 1 0

しかし、私が知る限り、視聴者のポイントは (0, 0, 0, 1) にあるため、射影は方程式にどのように影響するかについては意味がありません。このマトリックスは、このサイトで設定する式に従って調整する必要もあります:
http://www.cs.nps.navy.mil/people/faculty/capps/iap/class2/viewing/projection.html

これを理解するのに少し助けが必要です.クラスで議論したことは、私には意味をなさない類似の三角形のみを使用することでした...

0 投票する
3 に答える
5739 参照

java - JAMA マトリックスの列を印刷するにはどうすればよいですか?

JAMA.matrix パッケージを使用しています。行列の列を印刷するにはどうすればよいですか

0 投票する
2 に答える
5190 参照

c# - Direct3D (Transformation2D?) での効率的な線画

背景:私は DirectX 用の SlimDX C# ラッパーを使用しており、Sprite クラスを使用して多くの 2D スプライトを描画しています (従来は、基礎となる dll の Direct3DX 拡張から)。一度に数百のスプライトを画面に描画していますが、パフォーマンスは素晴らしいです。私のクアッド コアでは、10,000 以上のオブジェクトのロジックを含め、ゲーム全体でプロセッサの 3 ~ 6% を使用しています。 2 番目のスレッドのルーチンなど。明らかに、スプライトは完全なハードウェア アクセラレーションを使用して描画されており、すべてが本来あるべき状態になっています。

問題: Line クラスへの呼び出しを導入し始めたときに問題が発生します。(ドラッグ選択ボックス用に) 4 本の線を引くとすぐに、プロセッサの使用率が 13 ~ 19% に急上昇します。これでたったの4行!

私が試したこと:

  1. 線のアンチエイリアシングのオンとオフを切り替えます。
  2. GLines のオンとオフを切り替えます。
  3. 描画する呼び出しの周りで line.begin と line.end を手動で呼び出します。
  4. line.begin と line.end へのすべての呼び出しを省略します。
  5. line.draw への呼び出しが sprite.begin / sprite.end ブロック内にないことを確認します。
  6. sprite.begin / sprite.end ブロック内で line.draw を呼び出す。
  7. 4 ラインのレンダリング、または 300 のレンダリング。
  8. すべてのスプライトとテキストのレンダリングをオフにし、ライン レンダリングを 4 行だけ残します (これが何らかのモード変更の問題であるかどうかを確認するため)。
  9. 上記のほとんどの組み合わせ。

一般に、これらのいずれもパフォーマンスに重大な影響を与えませんでした。#3 では、プロセッサの使用率がおそらく 2% 減少しましたが、それでも、本来よりも 8% 以上高いままです。最も奇妙なことは、上記の #7 がパフォーマンスにまったく影響を与えなかったことです。4 行でも 300 行と同じくらい遅かったのです。私が把握できる唯一のことは、これが何らかの理由でソフトウェアで実行されているということです。および/または、グラフィックカードがある種の描画モードを継続的に切り替えていること。

マトリックスアプローチ:

誰かが上記の問題の修正を知っている場合は、それを聞いてみたいです!

しかし、これは一般的に directx 内の問題である可能性があると想定しているため、別のルートを追求してきました。つまり、独自のスプライト ベースのラインを作成することです。基本的に、1 ピクセルの白い画像があり、拡散色と変換を使用して線を描画しています。これはパフォーマンス的には機能します。このように 300 本の「線」を描画すると、クアッド コアで探している 3 ~ 6% のプロセッサ使用率のパフォーマンス範囲に収まります。

ピクセル ストレッチ ライン テクニックには 2 つの問題があります。変換について詳しい人が助けてくれることを願っています。水平線の現在のコードは次のとおりです。

これは、画面上のほぼ正しい位置にほぼ正しいサイズの線を描画する限り、機能します。しかし、物事が右にずれて見えるのは奇妙です。私のマトリックスアプローチがまったく正しいかどうかはよくわかりません.1x1のスプライトを水平方向にある量のピクセルでスケーリングし、垂直方向に別の量だけスケーリングしたいだけです. 次に、それらを配置できるようにする必要があります-中心点で問題ありません。それが私がしなければならないことだと思いますが、左上で配置できれば、さらに良いでしょう。これは単純な問題のように思えますが、行列に関する私の知識はかなり貧弱です。

これにより、純粋な水平線と純粋な垂直線が機能するようになり、これがほとんどの戦いです。それだけで生活でき、現在斜めの線を使用している場所に他の種類のグラフィックを使用できます. しかし、この引き伸ばされたピクセルのアプローチを使用して角度のある線を描く方法があれば、本当にいいと思います. つまり、たとえば 1,1 から 7,19 までの線を引きます。行列の回転などでは、これは実行可能のようですが、推測とチェック以外にどこから始めればよいかわかりません。これには永遠に時間がかかります。

どんな助けでも大歓迎です!

0 投票する
4 に答える
34893 参照

c# - C#で行列を一度に回転、スケーリング、および変換する方法は?

さて、これは単純なマトリックスの質問であるべきですが、私のマトリックスの理解はやや限られています. シナリオは次のとおりです: 1px x 1px のスプライトがあり、x と y の量 (両側で異なる量) でスケーリングし、そのスプライトを角度で回転させたいと考えています。全体を正確に配置します(左上または中央から、私には違いはありません)。

これまでのところ、私のコードは漠然と近いですが、渡す角度に応じて、ランダムな量だけずれている傾向があります.

私はこれがそれを行うと思います:

しかし、私はそれが正しい位置にあると思っていても、回転した線のスケールを縮小する傾向があります.

私もこれを試しました:

線は正確なサイズと形状で正確に見えますが、正確に配置することはできません。上記の呼び出しの最後に移動ベクトルを使用した場合、または Sprite.Draw を使用して位置を設定した場合、どちらも正しく機能しません。

これはすべてSlimDXにあります。私は何を間違っていますか?

0 投票する
5 に答える
1200 参照

c++ - 4Dアレイを割り当てようとすると、セグメンテーション違反(コアダンプ)が発生するのはなぜですか?

大きな4Dマトリックスを割り当てようとしていますが、動的に割り当てたいと思います。静的マトリックスを作成するだけですべてが正常に機能するので、今のところ十分なメモリがあることがわかります。ただし、同じことを動的に実装しようとすると、3番目の次元に入るたびに壊れて、4番目の次元に到達する必要があります。このコードが機能しない理由を誰かに教えてもらえますか?

このコードでさまざまなバリエーションを試し、newの代わりにmallocを使用しましたが、機能させることができません。どんな助けでも大歓迎です。