an*n 行列で同じ値を持つ k ブロックを作成したい (k は、行数に列数を掛けた n*n で正確に割ることができる):
たとえば、n = 4 かつ k = 4 の場合 (k は正確に 4*4=16 で割ることができます)、行列は次のように作成されます。
1 1 2 2
1 1 2 2
3 3 4 4
3 3 4 4
forループなしでこれを行うにはどうすればよいですか?
クロネッカー積と呼ばれる素晴らしく便利な数学演算子があります:
m1 <- matrix(1:4,nrow=2,byrow=TRUE)
m2 <- matrix(1,nrow=2,ncol=2)
kronecker(m1,m2)
このMatrix
パッケージには、スパース行列(?"kronecker-methods"
)のクロネッカー積のメソッドが含まれているため、クロネッカー積でパターンを表現する方法があれば、巨大なスパースパターン行列を簡単に作成できます。