una - plot matlab
Obtenga una columna diferente en cada fila (2)
Puede usar sub2ind para convertir (i, j) índices a índices lineales en la matriz A
idx = sub2ind(size(A), 1:size(A, 1), B'');
A(idx)
ans =
2 4 5
Eso funciona suponiendo que el vector B tiene tantas entradas como filas hay en A. En el sub2ind anterior se genera un índice lineal para cada par de números de fila subsiguientes (1: tamaño (A, 1)) y números de columna dados en B.
Me gustaría obtener una columna diferente de cada fila de una matriz. Por ejemplo:
A = [1,2;1,4;5,2]
B = [2;2;1]
la salida debe ceder:
out = [2;4;5]
En resumen: A
es la matriz y B
tiene los índices para las columnas por fila. ¿Cómo puedo hacer esto sin usar un bucle (si es posible)?
Puedes hacerlo por diag(A(:,B))
, sin embargo hay un bucle, pero solo implícito. No sé cómo hacerlo sin ningún bucle.