Это должно быть довольно просто, используя оператор :
, см. Следующий код. Предположение: значения в m
всегда соответствуют индексам в r
. Я немного изменил пример ввода, так что вы видите, что значения, которые не имеют соответствующего индекса в r
, скорее всего m(i) > numel(r)
, опущены.
% Slightly modified input.
m = [1, 2, 0; 3, 4, 0];
m(:, :, 2) = [2, 0, 1; 0, 5, 3]
% Recode vector.
r = [11, 22, 33, 44];
% Get indices in m which correspond to recode elements.
idx = ((m(:) > 0) & (m(:) <= numel(r)));
% Recode elements in m.
m(idx) = r(m(idx))
Выход:
m =
ans(:,:,1) =
1 2 0
3 4 0
ans(:,:,2) =
2 0 1
0 5 3
m =
ans(:,:,1) =
11 22 0
33 44 0
ans(:,:,2) =
22 0 11
0 5 33