首页 > 解决方案 > 返回两个大小不等的数组匹配的索引

问题描述

我有两个具有匹配数字的列数组 x 和 y,但是 y 中的前几个数字丢失了。如何索引 x 中缺少数字的行?

例如,如果我有

x = [1,5,6,5,8,8,10]'

y = [6,5,8,8,10]'

它应该返回:

z = 0,0,1,1,1,1,1

(其中 z 与 x 大小相同)

标签: matlab

解决方案


如果数组仅在开头缺少数字,则可以使用NaN(非数字)术语来填充数组。在将数组填充到相等大小之后,可以分别对相应的索引/元素进行比较操作。简而言之,这将填充数组,然后检查相应的元素是否匹配。

x = [1,5,6,5,8,8,10]';
y = [6,5,8,8,10]';

Length_Difference = length(x) - length(y);
Padding_Vector = NaN(1,Length_Difference).';
y = [Padding_Vector; y];

Matches = (x == y);
Matches.'

但是,如果您只是想查看使用中x存在的各个元素是否可以解决问题。要检查相反的情况,请使用.yismember()ismember(y,x)

Matches = ismember(x,y);
Matches.'

使用 MATLAB R2019b 运行


推荐阅读