在MATLAB中根据条件组合两个不同大小的矩阵

时间:2017-11-07 18:31:47

标签: arrays matlab matrix

我有两个矩阵,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];

我想以我的输出将返回的方式比较AB

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可能是我正在寻找的功能,但即便如此,我怎样才能获得该列的值?

1 个答案:

答案 0 :(得分:3)

您应该使用ismember的两个输出。第一个告诉你是否存在一个值,第二个告诉你找到它的索引(如果它不存在,则为0):

[isMatch, index] = ismember(B(1, :), A);
C = nan(size(B, 1), numel(A));
C(:, index(isMatch)) = B(:, isMatch);