如何从 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
假设我们有
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