Вопрос по matlab, row, matrix – Получить разные столбцы в каждом ряду
2
ответа
Ты можешь использоватьsub2ind преобразовать (i, j) индексы в линейные индексы в матрице A
idx = sub2ind(size(A), 1:size(A, 1), B');
A(idx)
ans =
2 4 5
Это работает при условии, что вектор B имеет столько же записей, сколько строк в A. В приведенном выше sub2ind генерирует линейный индекс для каждой пары последующих номеров строк (1: размер (A, 1)) и номеров столбцов, указанных в B.
Это работает отлично, спасибо. Я должен посмотреть документацию sub2ind, чтобы полностью понять, как это работает.
Tim
diag(A(:,B))
Тем не менее, существует цикл, но только неявный. Я нене знаю, как сделать это без всякой петли.
Этот метод работает, конечно, но на пути он создает матрицу N x N (A (:, B)). Это довольно сложная задача, когда в конце концов вы хотите получить вектор размера N.
angainor
Как и ответ с использованием sub2ind, это также отлично справляется с задачей.
Tim
Да, и этоВот почему я выбрал ваш ответ, чтобы быть реальным ответом :-).
Tim