返回两个大小不等的数组匹配的索引

时间:2021-01-21 15:51:25

标签: matlab

我有两个具有匹配数字的列数组 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 的大小相同)

1 个答案:

答案 0 :(得分:0)

如果数组仅在开头缺少数字,则可以使用 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 的各个元素是否存在于 y 中,使用 ismember() 就可以解决问题。要检查相反的情况,请使用 ismember(y,x)

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

使用 MATLAB R2019b 运行

相关问题