4

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ループなしでこれを行うにはどうすればよいですか?

4

1 に答える 1

10

クロネッカー積と呼ばれる素晴らしく便利な数学演算子があります:

m1 <- matrix(1:4,nrow=2,byrow=TRUE)
m2 <- matrix(1,nrow=2,ncol=2)
kronecker(m1,m2)

このMatrixパッケージには、スパース行列(?"kronecker-methods")のクロネッカー積のメソッドが含まれているため、クロネッカー積でパターンを表現する方法があれば、巨大なスパースパターン行列を簡単に作成できます。

于 2012-10-04T13:13:08.667 に答える