Может кто-нибудь мне помочь, пожалуйста?Индексирующие векторы с многомерными массивами
У меня есть матрица 4x5x3 и колонка 2x1.
matrix = ones(4,5,3);
column = ones(2,1);
matrix(1,1,1) = 2;
column(2,1) = 34;
Когда я подставить значения в матрице с помощью колонки все работы, как ожидалось:
column(matrix)
ans(:,:,1) =
34 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
ans(:,:,2) =
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
ans(:,:,3) =
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
В конце концов я иметь такую же матрицу, но с замещенными значениями.
Однако, когда я делаю это так:
matrix = ones(4,5,3);
column = ones(2,2);
matrix(1,1,1) = 2;
column(2,2) = 34;
column(matrix, 2)
ans =
34
1
1
1
1
1
1
1
1
1
1
1
...
Результат не сохраняет структуру исходной матрицы. Я хочу, чтобы результат был таким же, как и в предыдущем примере, но я хочу использовать второй столбец для замены. Каков наилучший способ сделать это?
Вы можете использовать 'reshape', чтобы вернуть результат в форму. –
@ s.bandara, спасибо! Какое решение более эффективно: 1) Используйте reshape 2) Скопируйте второй столбец 'column_2 = column (:, 2); column_2 (matrix) ' – warmspringwinds
Я не знаю. Вы должны попытаться профилировать его, если это действительно важно для вас. MATLAB может быть удивительным в таких вещах. –