You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效获取保留两矩阵对应位置公共元素的矩阵?

更高效的向量化实现方法

当然有比循环遍历高效得多的方法!Matlab的核心优势就是向量化运算,完全不用手动写循环就能搞定这个需求,代码还简洁得一批~

实现思路

我们可以先生成一个逻辑矩阵,标记出A和B对应位置元素相等的地方,再用这个逻辑矩阵和原矩阵逐元素相乘,就能自动把不相等的位置置为0,保留相等位置的元素。

具体代码

首先定义你的矩阵:

A = [2 8 4; 7 3 9]; 
B = [2 1 6; 1 3 9];

然后一行代码生成目标矩阵C:

C = A .* (A == B);

或者用B来计算也可以,结果完全一致:

C = B .* (A == B);

代码解释

  • A == B:这一步会生成一个和A、B维度相同的逻辑矩阵,对应位置元素相等时为true(数值上等价于1),不等时为false(数值上等价于0)。
  • .*:这是Matlab的逐元素乘法,把逻辑矩阵和A(或B)的每个元素对应相乘,这样相等的位置就保留原元素,不等的位置因为乘以0就变成了0,正好得到你想要的C矩阵。

这种方法不仅代码简洁,而且运算效率远超循环——Matlab对向量化操作有底层优化,尤其是当矩阵规模很大时,速度差距会非常明显。

内容的提问来源于stack exchange,提问作者Matte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:14:06