matlab - 向量化二元运算的串联

标签 matlab matrix vectorization logical-operators

假设我有一个元胞数组,它包含一堆逻辑矩阵,例如

matrices = 
    [225x400 logical]
    [225x400 logical]
    ....
    [225x400 logical]

元胞数组可能包含数百个矩阵。

我想计算一个矩阵,它是对该矩阵进行二元运算串联的结果。

result = matrices{1} & matrices{2} & matrices{3} & ..., etc.

我的问题:是否可以在不循环的情况下执行此操作?如果是这样,将此计算 MATLAB 向量化有什么好处吗?

如果矩阵堆栈表示为 3D 数组(而不是元胞数组?),例如:

  Name                        Size                  

  matrices                  225x400x100

将这些类型的堆栈保存为元胞数组与 3D 矩阵相比有什么好处吗? (澄清一下,在最后一个示例中,我们将计算 100 矩阵的 AND,每个矩阵的大小为 225x400)。

PS:我对ANDXOROR 的解决方案很感兴趣

最佳答案

您不能对元胞数组进行矢量化计算。您必须将其转换为 3D 数组(使用 cell2mat),或者更好:预先分配一个 3D 数组。

然后,对于 225x400x100 的尺寸,您可以:

或:

any(matrices,3)

和:

all(matrices,3)

异或:

mod( sum(matrices, 3), 2)

元胞数组的好处是内存保存(例如,一旦您删除了一个元胞)。元胞数组稳定后,您应该将其转换为用于矢量化计算的矩阵,这比 Matlab 循环快得多。

关于matlab - 向量化二元运算的串联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7719248/

相关文章:

c++ - 如何比较物体之间的相对旋转?

python - Numpy 中每一行的 `vectorize`

arrays - 将嵌套结构数组 reshape 为具有不同大小元素的元胞数组

r - 从计算的角度来看,有没有办法简化 $ADA^T$,其中 $D$ 是对角矩阵?

arrays - 在符号函数 symsum 中索引数组时出现下标索引错误

python - 每行 Bin 元素 - NumPy 的矢量化 2D Bincount

Matlab:复制和乘以两个向量的最快方法

python - 如何找到从一个系列到另一个系列的最近邻索引

matlab - libsvm:使用留一法评估 SVM

Matlab散点图和直方图