假设我们有
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
但没有骰子。
最佳答案
只需使用 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
关于arrays - 如何在Matlab中从多维数组中获得积分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29461836/