比较不同长度的向量

时间:2016-08-23 13:25:54

标签: matlab

我试图比较两个不同大小的向量。例如,当我运行以下代码时:

A = [1 4 3 7 9];
B = [1 2 3 4 5 6 7 8 9];

myPadded = [A zeros(1,4)];

C = ismember(myPadded,B)

我得到以下输出:

C = 1 1 1 1 1 0 0 0 0

但是,我想要一个能反映比较值位置的输出,因此,我希望输出显示如下:

C = 1 0 1 1 0 0 1 0 1

拜托,我需要一些帮助:)

3 个答案:

答案 0 :(得分:6)

有2分。首先,您正在以错误的顺序编写ismember的输入。此外,您不需要增长矩阵。只需尝试ismember(B, A)即可获得您的期望。

答案 1 :(得分:5)

函数ismember(myPadded, B)返回一个与myPadded大小相同的向量,指示myPadded的第i个元素是否存在于B.

要获得所需内容,只需反转参数顺序:ismember(B, myPadded)

答案 2 :(得分:0)

快速执行此操作的方法是使用逻辑索引。这仅适用于B中包含A的最后一位数字。

A = [1 4 3 7 9];
c(A) = 1; % or true.

这里的假设是你想要向量1:N子索引,这样B总是B = 1:N。如果最后一个数字不是一个,这很容易修复。只需记住在完成后将所有状态恢复到之前的状态。虽然它会增加2行。

这个解决方案是一个处理非常常见问题的特例。