matlab元胞数组,计算不同元素的数量

标签 matlab cell-array

我有 2 个元胞数组,如下所示:

A = {'S' 'M' 'N' 'E'};
B = {'E' 'M' 'Q' 'S'};

在本例中,不同元素的数量为 3。

在数字数组中,我可以使用 length(find(A ~= B)); 轻松地一步计算不同元素的数量。

字符元胞数组有类似的东西吗?

最佳答案

编辑:我想我误解了你的问题,你可能意味着在数组中的相应位置找到不同的元素。我仍然保留我的旧答案

计算同一位置的不同元素

yuk 使用 strcmp 的方法是正确的。但是,仅当两个数组大小相同时它才有效。通用的解决方案是:

N = min(numel(A), numel(B));
sum(~strcmp(A(1:N), B(1:N))) + numel(A) + numel(B) - 2 * N

如果数组的长度不同,则较大数组中的“额外”元素将被视为不同的元素。

计算任意位置的不同元素

最通用的方法是使用 ismember,它不关心字符串的长度或其在数组中的位置。要计算 AB 中不同元素的总数,只需执行以下操作:

sum(ismember(A, B)) + sum(ismember(B, A))

使用 setdiff 也可以获得相同的效果(而不是ismember):

numel(setdiff(A, B)) + numel(setdiff(B, A))

这两种方式对于任意两个数组都有效,但不一定大小相等。

关于matlab元胞数组,计算不同元素的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15296497/

相关文章:

arrays - 删除具有相同第一列和最小第二列的行

MATLAB - 生成具有值序列的向量

c++ - Matlab legacy_code 工具 - 编写包装函数来捕获数组

matlab - 在 MATLAB for 循环中恢复向量

performance - 更快地连接不同大小的元胞数组

matlab - 从元胞数组中提取数据

python - 从压缩文件中读取 matlab 文件 (*.mat) 而无需解压缩到 Python 中的目录

string - 在 MATLAB 中,如何在元胞数组中的每个字符串的开头插入一个字符串?

matlab - 删除元胞数组列

matlab - 访问单元格的预定义元素