问题描述
编辑:我最后改变了我的例子,但我仍然被难住了。
如何应用梯形积分函数,以便通过数组的第 3 维对每个矩阵点进行积分?
我正在处理大量数据(2160、4320、46),我想在数组的第三维上使用梯形积分(每个矩阵向下指向第三维的 46 个堆栈)。例如,点 1,1,1 ; 1,2 ; 1,3 等作为积分函数中的 Y 点输入。
编辑:我被告知可以在 Jarek Tuszynski 的 CRAN 包 caTools 中找到此功能
trapz = function(x,y){
idx = 2:length(x)
return (as.double( (x[idx] - x[idx-1]) %*% (y[idx] + y[idx-1])) / 2)
}
data_output = apply(X = data,MARGIN = 1:2,FUN = function(k) (mean(na.omit(k))) )
但我不知道如何让 trapz 函数沿着我想要的边距工作。
使用简单的示例代码,如果我创建这样的数组:
x.mat = matrix(1:100,nrow = 10,ncol = 10)
y.mat = matrix(1:100,ncol = 10)
library(abind)
x.array = abind(x.mat,(x.mat+1),(x.mat+2),along = 3,force.array = T)
y.array = abind(y.mat,(y.mat+1),(y.mat+2),force.array = T)
apply(MARGIN = 1:2,FUN = trapz,X = x.array,y = y.array)
输出是一个具有正确维度 (10,10) 的矩阵,但每个数字都是 4。
请帮助我理解我做错了什么。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)