問題タブ [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.
matlab - 条件を指定してマトリックスサブマトリックス要素を削除する方法は?
行列について知っていますがmat
、特定の条件を満たすすべての要素を (要素ごとに) 削除する場合、たとえばすべてのゼロを削除する場合、次のようになります。
しかし、どうすればこれをサブマトリックスごとに行うことができますか。つまり、条件を指定してマトリックスのサブマトリックス要素を削除できます。例として、data4d
はサイズ の 4D 行列n1 x n2 x n3 x n4
です。i
4 番目の次元の( 1=<i<=n4
) 番目のサブマトリックスのすべての要素、つまりdata4d(:, :, :, i) == zeros(n1, n2, n3)
が削除される場合、つまりdata4d(:, :, :, i) = []
.
for
単純なループなしでこれらを行うにはどうすればよいですか? 次の 2 つのバージョンはどちらも機能しません。
matlab - サブマトリックスのインデックス作成とループなしの操作
私は次の問題を抱えています: 私は である行列を持っており、20 x 1000
それを size の 4 つの部分行列に分割したいと考えています20 x 250
。
その後、P
部分行列の数 4 に等しい長さのベクトルがあると仮定して、各部分行列の操作を行いたいと思います。
各サブマトリックス(A)に対して私が目指していることは次のとおりです。
最初の部分行列の場合: A(:,1:P(1))=1
2 番目のサブマトリックスと同様に、次のように続きA(:,1:P(2))=1
ます。
ループなしでこれを行うにはどうすればよいですか?
matlab - Matlab に 2 つの部分行列を追加しますか?
私は5x5
行列 M = magic(5) and I must add two sub-matrices of it (using the
sum command) and store it in
G` を持っています。
M(1:3,1:3)
とM(3:5,3:5)
そして、私はこれを書きましたが、それが正しいかどうかはわかりませんが、
c - 割り当てられた行列の一部のみを効率的に反転する方法
事前定義されたサイズ N x N の複雑な double 行列 "A" を割り当てるアルゴリズムがあります。要素は最初はゼロです。また、サイズ N x N の行列を割り当てて、逆行列 "A_inv" を格納しました。アルゴリズム中に、「A」の要素が満たされます。各反復 i で、最終的にサイズ ix i の部分行列になります。したがって、N=4 の 2 回目の反復では次のようになります。
ここで、x はゼロ以外の値を示します。ここで、行列の非ゼロ部分 (この例では 2x2 行列) を反転したいと考えています。これまでのところ、私は次の方法でこれを行ってきました。
- "A" の非ゼロ要素を 2x2 gsl 行列にコピーします
- gsl LU 分解を使用して 2x2 gsl 行列を反転します
- 2x2 反転行列を A_inv にコピーします
このアプローチの問題は、各反復で行列を 2 回コピーする必要があることです。1 回はより小さい nxn gsl 行列に、もう 1 回は結果の逆 nxn gsl 行列を A_inv にコピーします。
誰かがもっと直接的な方法を知っているかどうか疑問に思っていました。gsl 関数を使用して行列の一部のみを反転し、ゼロ要素を無視する方法はありますか? 次のように言います。
ここで、n < N です。ここでinvert_submatrix()
は、A の nxn 部分のみを考慮します。さらに、元の行列 "A" は、この反転によって変更されてはなりません。たぶん、最後の要求により、とにかくマトリックスをコピーする必要が生じます。その場合、私が今行っていることよりも効率的ではありません。とは言っても、gsl アルゴリズムは、私が通常思いつくものよりもはるかに効率的である傾向があります。したがって、これに関する考えは大歓迎です。
r - 行列を部分行列に分割する
マトリックスが正方形ではない可能性がある場合(私の状況ではそうではない可能性があるため)、マトリックスを重複しないサブマトリックスのセットに分割する同様の質問に対する解決策を見つけましたR. _ ただし、私の場合、マトリックスをオーバーラップさせたいと考えています。次のマトリックスを例として使用します。
サブマトリックスの行数と列数をそれぞれ 4 と 4 に選択した場合、返されるサブマトリックスは、元のマトリックスの境界内に完全に収まるすべての重複する 4X4 サブマトリックスである必要があります (これは別の場所です)。この質問への回答は、私が参照した質問とは異なる必要があるかもしれません)。私の例では、返される必要があるサブマトリックスは 2 つだけです。 M[1:4,1:4]
とM[2:5,1:4]
。サブマトリックスの任意のサイズを選択できるはずです。重複する部分行列を抽出する例を見つけることができないようですが、これは考えすぎている可能性があります。これを行うための最良の方法について何か考えがある人はいますか?
matlab - Matlab:特定の基準で行列から部分行列を選択する
私は行列Aを持っています
最初の列は企業コードです。残りの列は企業のデータで、各行は特定の年の列 1 の企業を参照しています。年数はすべての企業でバランスが取れているわけではないことに注意してください。最初の列に従ってサブマトリックスを減算したいと思います。たとえば、A(1:3,2:11)
931142103 の場合:
と同じ459200101
(これはA(4:7,2:11)
) およびA(8:10,2:11)
for37833100.
コードは次のようにすべきだと思います:
これらの複雑なコードを索引付けするのは困難で459200101
あり37833100
、それらをまとめるのも困難です。そして、サブマトリックスの行をどのように書くことができA{i}
ますか?
本当にありがとう!