3
給定一個向量t。如何填充矩陣,如布朗運動和協方差矩陣
t[1] t[1] t[1] ... t[1]
t[1] t[2] t[2] ... t[2]
t[1] t[2] t[3] ... t[3]
... ... ... ... ...
t[1] t[2] t[3] ... t[n]
對應於時間t時布朗運動的協方差矩陣?
給定一個向量t。如何填充矩陣,如布朗運動和協方差矩陣
t[1] t[1] t[1] ... t[1]
t[1] t[2] t[2] ... t[2]
t[1] t[2] t[3] ... t[3]
... ... ... ... ...
t[1] t[2] t[3] ... t[n]
對應於時間t時布朗運動的協方差矩陣?
這是一種方法。
t <- 11:15
m <- vapply(seq_along(t), function(i) c(t[seq_len(i)], rep(t[i], length(t)-i)), numeric(length(t)))
m
# [,1] [,2] [,3] [,4] [,5]
#[1,] 11 11 11 11 11
#[2,] 11 12 12 12 12
#[3,] 11 12 13 13 13
#[4,] 11 12 13 14 14
#[5,] 11 12 13 14 15
你可以使用sapply
太 - 有點短,但也有點慢(你不指定什麼函數返回):
m <- sapply(seq_along(t), function(i) c(t[seq_len(i)], rep(t[i], length(t)-i)))
第(i,j)的係數的值是min(i,j):
m <- matrix(NA, nr=5, nc=5) # Empty matrix with the right size
m <- pmin(col(m), row(m))
看起來像這個解決方案比@ Tommy's更快一點。 – 2012-02-11 13:20:17
@Vincent我試着將你的答案概括爲一般向量t,如下:m < - pmin(t [col(m)],t [row(m)])'但是這給了我一個大小爲nc * nr的向量,所以我再次應用了矩陣命令 – jmbarrios 2012-02-13 18:39:21
那應該是 'pmin(col(t),row(t))', 如果你的矩陣真的叫做't'。 因爲't'已經是轉置功能,所以我將矩陣的名字從't'改爲'm' 。 – 2012-02-13 22:40:30