我试图比较两个不同大小的向量。例如,当我运行以下代码时:
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
拜托,我需要一些帮助:)
答案 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行。
这个解决方案是一个处理非常常见问题的特例。