在MATLAB中连接两个数组

时间:2014-04-14 19:35:32

标签: matlab

我有一个5000x2阵列:

A = [1, 3; 2, 4; 1, 6; 2, 4; 1, 7];

我有另一个大小为100x2的数组,它看起来像是:

B = [1, 14; 2, 15];

如何创建第三个数组,我将使用向量B的第2列来修改矩阵A:

C = [1, 3, 14; 2, 4, 15; 1, 6, 14; 2, 4, 15; 1, 7, 14]; 

我只想使用B的第1列作为键,它与A的第1列的内容相同。

2 个答案:

答案 0 :(得分:2)

假设B上的第一列是indices = 1 2 3 4 ...,则以下内容应该有效:

A = 
     1     3
     2     4
     2     6
     2     4
     1     7
     2     8

C(:,3) = B(A(:,1),2)
C =
     1     3    14
     2     4    15
     2     6    15
     2     4    15
     1     7    14
     2     8    15

或者如果您只是想要14 15 14 15

C = [A repmat(B(:,2),size(A,1)/size(B,1),1)]

答案 1 :(得分:0)

执行以下操作:

A(A(:,1)== key ,3) = B(B(:,1)== key ,2);

其中key取值1和2(以及任何其他可能的键)。

这条线做什么?对于第一列值等于A(:,1)== key的行,key将为true,然后将A的第三列设置为等于具有相同key的B的值。< / p>

你应该为key = 1和key = 2执行这一行,以获得你需要的东西。