Как использовать такие функции, как repmat, replicate или kron в MATLAB

Я хочу преобразовать матрицу b:

b(:,:,1) =
     1
b(:,:,2) =
     3
b(:,:,3) =
     5

в матрицу с:

c(:,:,1) =
     1     1
     1     1
c(:,:,2) =
     3     3
     3     3
c(:,:,3) =
     5     5
     5     5

без использования for петель. В матрице c каждый элемент 1x1 матрицы b преобразуется в блок 2x2 с тем же значением, что и соответствующий элемент матрицы b.


person Community    schedule 19.07.2012    source источник


Ответы (2)


вы можете просто использовать индексацию, которая обычно быстрее:

b([1 1],[1 1],:)
person Gunther Struyf    schedule 19.07.2012
comment
Отличная находка! Очень элегантно! - person Johan; 14.07.2016

Если я вас правильно понял, то:

   c = repmat(b, [2 2 1])
person Dan    schedule 19.07.2012