matlab извлекает элементы в векторе, соответствующем матрице индексов

#arrays #matlab #matrix #indexing

#массивы #matlab #матрица #индексирование

Вопрос:

У меня есть вектор v .
У меня также есть матрица M размера T x N , каждый столбец которой соответствует T индексам v .
Например: M(:,1) — это набор индексов [1,2,12,5,4] (здесь T = 5).

Я хочу иметь матрицу O размера T x N с O(:,i) = v(M(:,i)) для всех i .
Есть ли способ сделать это без использования циклов for?

Большое спасибо

Ответ №1:

Очень просто: просто используйте

 O = v(M);
  

Пример с T=3 , N=4 :

 >> v = (10:10:50).'
v =
    10
    20
    30
    40
    50
>> M = randi(5,T,N)
M =
     5     3     5     3
     2     3     1     4
     2     4     5     3
>> O = v(M)
O =
    50    30    50    30
    20    30    10    40
    20    40    50    30