gpt4 book ai didi

r - 有效地从相乘的子矩阵构造矩阵

转载 作者:行者123 更新时间:2023-12-02 03:19:45 27 4
gpt4 key购买 nike

我想构造一个矩阵(其中 A 是实数矩阵,I 是单位矩阵):

enter image description here

我不想使用 for 循环。我试过这样的事情:

sequence = 1:T
sapply(sequence, function(i) matrix(A%^%(i-1)))

但失败了。我想到了创建图中的第一个矩阵列,然后继续沿对角线复制计算出的矩阵,但我不知道如何实现这一点。

编辑:对于我造成的麻烦,我深表歉意。这是我在快速而肮脏的 for 循环中寻找的内容

library("expm")

n<-5

A<-matrix(1, 2, 2)
output <- matrix(0, 5*2, 5*2)

for (i in 1:5) {
for (j in i:1) {
output[(2*(i-1)+1):(2*i),(2*(j-1)+1):(2*j)] = A %^% (i-j)
}
}

最佳答案

我刚刚想到了别的东西:

library("expm")

n<-5
A<-matrix(1, 2, 2)

output <- matrix(0, 5*2, 5*2)
output2 <- matrix(0, 5*2, 5*2)

start.time <- Sys.time()
for(dummy in 1:2000){
for (i in 1:5) {
for (j in i:1) {
output[(2*(i-1)+1):(2*i),(2*(j-1)+1):(2*j)] = A %^% (i-j)
}
}
}
end.time <- Sys.time()
time.taken <- end.time - start.time
time.taken

start.time <- Sys.time()


for(dummy in 1:2000){
for (i in 1:5) {
output2[(2*(i-1)+1):(2*i),1:2] = A %^% (i-1)
}

rowLength = dim(output2)[1]

for (i in 2:5) {
output2[(2*i-1):rowLength,(2*i-1):(2*i)] = output2[1:(rowLength-(2*(i-1))),1:2]
}
}
end.time <- Sys.time()
time.taken <- end.time - start.time
time.taken

这(平均而言)要快一点,但我认为使用一些内置函数魔法,结果会更好。也许有人可以提供帮助?

关于r - 有效地从相乘的子矩阵构造矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34311139/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com