私は105x105の行列B(実際には連結された<3x3>行列の35x35グループです)を持っており、<3x3>行列で機能するルールに従ってその要素を変更する必要があります。
サブマトリックスは行ごとに「1」のみを持つことができ、「1」は(1,1)および/または(2,2)および/または(3,3)でのみ発生する可能性があります。
したがって、可能なサブマトリックスは次のとおりです。
[0 0 0; 0 0 0; 0 0 0]、これは[0 0 0; 0 0 0; 000]になります
[1 0 0; 0 0 0; 0 0 0]、これは[1 1 1; 0 0 0; 000]になります
[0 0 0; 0 1 0; 0 0 0]、これは[0 0 0; 1 1 1; 000]になります
[0 0 0; 0 0 0; 0 0 1]、これは[0 0 0; 0 0 0; 111]になります
[1 0 0; 0 1 0; 0 0 0]、これは[1 1 1; 1 1 1; 000]になります
[1 0 0; 0 0 0; 0 0 1]、これは[1 1 1; 0 0 0; 111]になります
[0 0 0; 0 1 0; 0 0 1]、これは[0 0 0; 1 1 1; 111]になります
および[100; 0 1 0; 0 0 1]は、[1 1 1; 1 1 1; 111]になります。
私は[1 1 1]*any(submatrix,2)
値accを変更するために使用しています。ルールに合わせて、それはうまく機能します。しかし、私は次のループを使用してすべての部分行列を調べています。
for i=1:3:103
for j=1:3:103
temp=A(i:i+2,j:j+2);
temp=[1 1 1]*any(temp,2);
A(i:i+2,j:j+2)=temp
end
end
これを行うための代替のループレス方法はありませんか?