如何从 Matlab 中的多维数组中获取积分?

How to obtain integral from a multidimensional array in Matlab?

假设我们有

A(:,:,1) =

 1     1     1
 1     1     1
 1     1     1


A(:,:,2) =

 2     2     2
 2     2     2
 2     2     2


A(:,:,3) =

 2     2     2
 3     3     3
 2     2     2

我将如何沿 'page'(即 'z')轴对每个元素执行积分?

我们的结果矩阵M应该是3 x 3,例如:

M(1:1) 将包含 A(1,1,1), A(1,1,2)A(1,1,3).

的积分

M(1:2) 将包含 A(1,2,1), A(1,2,2)A(1,2,3).

的积分

以此类推

我想得到这样的矩阵 M:

M = 
3.5    3.5    3.5
4      4      4 
3.5    3.5    3.5

知道怎么做吗?我试过 trapz 但没有骰子。

只需使用 trapz 中的 DIM 参数(这适用于 Octave):

A = bsxfun ("times", ones (3, 3), permute([1 2 2], [1, 3, 2]));
A(2, :, 3) = 3;
M = trapz (A, 3)
M =

   3.5000   3.5000   3.5000
   4.0000   4.0000   4.0000
   3.5000   3.5000   3.5000