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

如何在MATLAB中从cell数组A移除存在于B的行得到数组C?

解决MATLAB中Cell数组行差集的问题

要得到数组C(A中存在但B中不存在的行),可以利用MATLAB的ismember函数结合逻辑索引轻松实现,具体代码和解释如下:

% 定义原始cell数组A和B
A = { 'U2', 'T13', 'A52'; 'U2', 'T15', 'A52'; 'U2', 'T18', 'A52'; 'U2', 'T17', 'A995'; 'U4', 'T18', 'A53'; 'U4', 'T13', 'A64'; 'U4', 'T18', 'A64'; };
B = { 'U2', 'T13', 'A52'; 'U2', 'T18', 'A52'; 'U4', 'T13', 'A64'; 'U4', 'T18', 'A64'; };

% 找出A中不在B里的行的索引
is_in_B = ismember(A, B, 'rows');
% 取反索引并提取目标行得到C
C = A(~is_in_B, :);

关键步骤解释:

  • ismember(A, B, 'rows'):这个函数会返回一个与A行数相同的逻辑数组,每一位对应A的一行——如果该行完整出现在B中,值为true,否则为false。'rows'参数是核心,它指定按整行匹配,而非逐个元素比对。
  • ~is_in_B:对逻辑数组取反,得到A中未出现在B里的行的索引。
  • A(~is_in_B, :):通过逻辑索引提取这些行,最终得到的就是你需要的C数组。

运行代码后,C的结果完全符合预期:

C = 
    'U2'    'T15'    'A52'
    'U2'    'T17'    'A995'
    'U4'    'T18'    'A53'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:49:45