假设我有一个矩阵A和一个向量B.是否可以使用向量B中的值作为索引从矩阵A中的每一行中选择一个值?例如:
A = [1, 2, 3;
4, 5, 6;
7, 8, 9;]
B = [1;3;1]
C = A(B) or C = A(:,B)
giving:
C = [1; 6; 7]
当然我可以用for循环来做这个,但是使用更大的矩阵需要一段时间。我还想用它来以下列方式制作逻辑矩阵:
A = zeros(3,3)
B = [1;3;1]
A(B) = 1
A = [1, 0, 0;
0, 0, 1;
1, 0, 0]
感谢你能给我的任何建议。
答案 0 :(得分:9)
您需要为此创建线性索引。按照你的例子:
octave-3.8.2> a = [1 2 3
4 5 6
7 8 9];
octave-3.8.2> b = [1 3 1];
octave-3.8.2> ind = sub2ind (size (a), 1:rows (a), b);
octave-3.8.2> c = a(ind)
c =
1 6 7
答案 1 :(得分:0)
据我了解,创建逻辑矩阵的方法如下:
>A = eye(3,3)
>B = [1;3;1]
>A(B,:) =
>
>[ 1 0 0;
> 0 0 1;
> 1 0 0; ]