gpt4 book ai didi

matlab - 3D 中切片的线性组合

转载 作者:太空宇宙 更新时间:2023-11-03 20:23:30 25 4
gpt4 key购买 nike

我有一个大小为 (x,y,N) 的 3D 矩阵和一个大小为 (N,N) 的 2D 矩阵。

我想以 2D 矩阵中的每一列都具有 3D 矩阵中 2D 大小的 (x, y) 切片的线性组合的系数的方式来操纵这两者。我想对二维矩阵中的所有 N 列执行此操作。

示意性地,

Schematic Picture Link

目前代码如下:

A = zeros(numel(x_axis), numel(y_axis), N);
B = zeros(numel(x_axis), numel(y_axis), N);
C = zeros(N, N)
for i = 1 : N
for j = 1 : N
A(:,:,i) = A(:,:,i) + B(:,:,j) * C(j,i);
end
end

但是速度很慢。有什么方法可以通过向量化来加速 MATLAB 代码吗?

最佳答案

如果我很好地理解你的问题,那么这应该可行:

[p,q,N] = size(B);
A = reshape( reshape(B, [p*q, N]) * C, [p, q, N]);

编辑:Suever 建议的更清洁的版本:

A = reshape(reshape(B, [], size(B, 3)) * C, size(B))

R-D 案例的泛化:

A = reshape(reshape(B, [], size(B, ndims(B))) * C, size(B))

关于matlab - 3D 中切片的线性组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42072570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com