В MATLAB я ищу эффективный (и/или векторизованный) способ заполнения матрицы, выбирая из нескольких матриц с учетом «селекторной матрицы». Например, даны три матрицы источникаВыберите значения с матрицей индексов в MATLAB?
M1 = [0.1, 0.2; 0.3, 0.4]
M2 = [1, 2; 3, 4]
M3 = [10, 20; 30, 40]
и матрица индексов
I = [1, 3; 1, 2]
Я хочу, чтобы создать новую матрицу M = [0.1, 20; 0.3, 4]
, выбрав первую запись из M1
, второй из M3
и т.д.
Я могу определенно сделать это во вложенном цикле, пройдя каждую запись и заполнив ее, но я уверен, что есть более эффективный способ.
Что делать, если M1
, M2
, M3
и M
являются все 3D матрицы (RGB изображения)? Каждая запись I
рассказывает нам, из какой матрицы мы должны взять 3-вектор. Скажем, если I(1, 3) = 3
, то мы знаем, что записи, индексированные (1, 3, :)
из M
, должны быть M3(1, 3, :)
.