#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