Matlab:沿 3D 数组的第一维的操作

标签 matlab matrix

我有一个 3D 数组 M(d*d,m,n)。对于 M 的每个 d*d 向量(即第一维的向量),我将它分成 d 部分,并将每个部分的总和形成一个新的向量(大小为 d)。 例如,如果 u 是 M 的第一个维度上的向量,则它将被向量 v 替换,计算公式为:

v = sum(reshape(u,d,d))';

目前我使用如下循环,但我认为应该有更快的方法。

N = zeros(d,m,n)
for i=1:m
    for j=1:n
        N(:,i,j) = sum(reshape(M(:,i,j),d,d))'; %//'
    end
end

非常感谢您的任何建议!

最佳答案

试试这个-

N = reshape(sum(reshape(M,d,[])),d,m,n)

关于Matlab:沿 3D 数组的第一维的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23934687/

相关文章:

c - 二进制矩阵 vector 乘法

Haskell 线性代数?

arrays - 在 MATLAB 中将函数分布在数组的单个维度上?

python - 配对颜色名称和值

matlab - 从 MATLAB 中的匿名函数访问当前作用域

matlab - 生成特定随机数的概率,例如在 MATLAB 中

arrays - 将第 i 行中的矩阵元素乘以第一行中的第 i 个元素

matlab - 在 Matlab 中读取和查看大 tiff

matlab - 修改x轴位置

Python稀疏矩阵删除除一个之外的重复索引?