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

时间:2015-04-05 20:24:18

标签: arrays matlab multidimensional-array integration octave

我们说我们有

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

我如何在'页面上的每个元素上执行积分? (即' 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,但没有骰子。

1 个答案:

答案 0 :(得分:3)

只需使用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