我有一个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列的内容相同。
答案 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执行这一行,以获得你需要的东西。