我有两个矩阵,A
,大小为1x30974,B
,大小为55x30974。矩阵A
包含从1到30974的值,而矩阵B
(第一行)包含的值也是矩阵A
的元素,但它们不必按顺序排列。< / p>
所以在一个简单的例子中,我会:
A = [1 2 3 4 5 6 7 8];
B = [1 2 6 8; 20 21 22 23; 30 31 32 33];
我想以我的输出将返回的方式比较A
和B
:
C = [1 2 3 4 5 6 7 8; 20 21 NaN NaN NaN 22 NaN 23; 30 31 NaN NaN NaN 32 NaN 33];
换句话说,如果B
的第一行中的值是A
的元素,则返回此列中的所有值。如果A的元素在B
的第一行中没有值,则该列为NaN
。
就我而言,输出的大小为55x30974。
我想ismember
可能是我正在寻找的功能,但即便如此,我怎样才能获得该列的值?
答案 0 :(得分:3)
您应该使用ismember
的两个输出。第一个告诉你是否存在一个值,第二个告诉你找到它的索引(如果它不存在,则为0
):
[isMatch, index] = ismember(B(1, :), A);
C = nan(size(B, 1), numel(A));
C(:, index(isMatch)) = B(:, isMatch);