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

问题描述 投票:0回答:1

假设我们有

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
但没有骰子。

arrays matlab multidimensional-array octave numerical-integration
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.