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