問題タブ [submatrix]

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 投票する
1 に答える
3294 参照

matrix - Armadillo で行列を結合する方法

いくつかのプロセスがあり、それぞれが独自の行列を計算しています。最後に、解決したマトリックスをルート プロセスに送信してもらいます。ルート プロセスは、文字通りそれらを 1 つの大きなマトリックスに結合し、これを単に ASCII 形式でテキスト ファイルに出力します。エレガントな方法で可能ですか、それともすべてのマトリックスを反復処理して自分で「結合」する必要がありますか?


例:

0 投票する
1 に答える
134 参照

ocaml - 行列 A が行列 B に含まれているかどうかをチェックする OCaml プログラムを書きなさい

Java では大きな問題に遭遇していませんが、OCaml プログラミング言語に関してはそうは言えません。subMat2 つの行列について、行列 A が行列 B の部分行列であるかどうかをチェックし、そうであれば - true を返す関数を作成することになっています -val subMat: int list list -> int list list -> bool = <fun>

この問題の対処法が本当にわからないので、助けていただければ幸いです。

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

matlab - n を引数として取り、matlab で部分行列を作成する関数を作成する方法

こんにちは、私は問題に陥っています。入力引数として n という名前のスカラー整数を取る quadrants という関数を作成します。この関数は、2n 行 2n 列の行列 Q を返します。Q は 4 つの n 行 n 列の部分行列で構成されます。左上隅の部分行列の要素はすべて 1、右上の部分行列の要素は 2、左下隅の要素は 3、右下の要素は 4 です。

助けてくれてありがとう..

0 投票する
1 に答える
480 参照

arrays - 行列をブロックの行列に分割する

画像データをブロックに分割したい。たとえば、X マトリックスが 4*4 の場合、結果を 2*2*2*2 のマトリックス M にしたい。M(1,1,:,:) =X(1:2,1:2) および M(1,2,:,:)=X(1:2,3:4) など

mat2cell を使用してセル配列に分割する方法を見つけましたが、セル配列は matlab ではあまりサポートされていないようです。SO を検索して、通常の行列で簡単に実行できることを行うように依頼します (使用しないことを示唆する回答が得られます)。 cell 配列はまったくありません)。

私はネットとSOを徹底的に検索しました.多くの結果があり、それらすべてが特定の問題を解決するか(ここでは望ましくない方程式の解を見つけるなど)、またはmat2cellを提案することになります.

私が見つけた最も近い結果はreshapeを使用していますreshape(X,[2 2 2 2]).C = 2 * 2 * 2 * 2行列を試してみましたが、C(1,1,:,:)は最初のブロックではなくXの最初の行のようで、できます次に何をすべきかわかりません。

誰かが提案しpermute(C,[1 2 3 4])ましたが、私はまだ私が望む結果を得ていません。

私はまだ matlab の初心者なので、質問が単純である場合はご容赦ください。また、for ループは必要ありません。ベクトル コードが必要です。

編集

その重複した質問の答えを試しましたが、それでも希望する結果が得られません。これらを試しました:

T は 10*10*4*4 で、まさに私が望むサイズ (40*40 をそれぞれ 4*4 のサブマトリックスのマトリックスに) でしたが、値が間違っています。T(1,1,:,:)~=A(1:4,1:4)

ここで何が間違っていますか?

0 投票する
1 に答える
767 参照

r - サブマトリックスからより大きなマトリックスへの値の代入

基本的に大きな行列のサブセットですが、値が異なる小さな行列がたくさんあります。これらのサブマトリックスから値を取得し、より大きなマトリックスの対応する値を上書きしたいと考えています。たとえば、これが私のより大きな行列だとします。

より小さなマトリックスは次のようになります。

したがって、たとえば、小さなマトリックス (2.5) の AB-2000 行と AB-3500 列の交点から値を取得し、それを大きなマトリックスの新しい値として設定し、同じことを行いたいと考えています。サブマトリックスの他の値を取得するため、次のような新しい大きなマトリックスが得られます。

より大きなマトリックスの値をオーバーライドするために使用している値のサブマトリックスがたくさんあるので、これを効率的に行う方法が必要です。何かご意見は?

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

arrays - Matlab でインデックス付きサブマトリックスのサブマトリックスに値を割り当てる

問題を説明するためにタイトルの文言を修正したかどうかはわかりません。以下の説明を反映するように自由に編集してください。

数独ソルバー プログラムがあり、入力行列が次のようになっているとします。

3x3 サブマトリックスに列ごとに 1 から 9 までのインデックスを付けます。このインデックスを表す変数nSubMatは、1 から 9 までの任意の値を取ることができるとします。

次の方法で部分行列にインデックスを付けます。

ここで、最初に SubMat を作成する必要なく (不要なコピーを避けるために)、SubMat の (2x3) 位置の値にアクセスして変更したいと考えています。

詳しく説明すると、上記を実装する関数 submatrix() がある場合、ステートメントは次のようになります。

あるいは、

Matlab インタープリターが速度のために LHS=RHS 型の割り当てを自動的に最適化することは知っていますが、上記の行列演算は、コピーを減らしてコードを高速化するだけでなく、ここでは詳しく説明しませんが、(アルゴリズム的に) より多くの理由で重要です。Armadillo という C++ ライブラリで必要な構文を見たことがありますが、MATLAB で同じことができるかどうかはわかりません。

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

matlab - matlab/numpy サブマトリックスの輪郭

matlab/numpy サブマトリックスの輪郭を取得する方法を探しています。たとえば、私が持っている場合:

[1,2,3,4,6,10,9,8,7,5] をすべてのエッジをスライスしてから連結するよりも速く (つまり、読みやすく) する方法はありますか?

編集:問題は、numpy でのスライスが面倒なことです。たとえば、サブマトリックスを識別する i0,i1,j0,j1 があるとします。

やりたかった: np._r[A[i0,j0:j1+1],A[i0:i1+1,j1],A[i1,j1:j0-1:-1],A[i1:i0 -1:-1,j0]]

ただし、[j1:-1:-1] は空のスライスを返すため、j0==0 の場合は [j1:j0-1:-1] は機能しません...

EDIT 2 : 次のスライスは機能しているようです。本当に良いかどうかはわかりませんが、うまくいくことはできませんでした。

回答してくれたすべての人に感謝します。より良い方法を見つけた場合は、遠慮なく投稿してください。

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

python-2.7 - Numpyを使用して行列からすべての正方部分行列を抽出する

NxN numpy 行列があるとします。このマトリックスからすべての正方形のチャンク (サブマトリックス) を抽出する最速の方法を探しています。0 < C < N+1の元の行列のすべての CxC 部分を意味します。サブマトリックスは、元のマトリックスの連続する行/列のインデックスに対応する必要があります。できるだけ短い時間でこれを達成したい。