我正在尝试加快我的代码速度,因为它运行时间很长。我已经发现问题出在哪里了。考虑以下示例:
x<-c((2+2i),(3+1i),(4+1i),(5+3i),(6+2i),(7+2i))
P<-matrix(c(2,0,0,3),nrow=2)
out<-sum(c(0.5,0.5)%*%mtx.exp(P%*%(matrix(c(x,0,0,x),nrow=2)),5))
我有一个带有复数值的向量 x,该向量有 12^11 个条目,然后我想计算第三行的总和。(我需要函数 mtx.exp 因为它是一个复杂的矩阵幂(该函数在包 Biodem 中)。我发现 %^% 函数不支持复杂的参数。)
所以我的问题是,如果我尝试
sum(c(0.5,0.5)%*%mtx.exp(P%*%(matrix(c(x,0,0,x),nrow=2)),5))
我收到一个错误:“pot %*% pot 中的错误:不符合要求的参数。” 所以我的解决方案是使用循环:
tmp<-NULL
for (i in 1:length(x)){
tmp[length(tmp)+1]<-sum(c(0.5,0.5)%*%mtx.exp(P%*%matrix(c(x[i],0,0,x[i]),nrow=2),5))
}
但如前所述,这需要很长时间。您对如何加快代码速度有任何想法吗?我也试过 sapply 但这需要和循环一样长的时间。
我希望你能帮助我,因为我必须运行这个函数大约 500 次,而且第一次尝试需要 3 个多小时。这不是很令人满意..
十分感谢