Предположим, у меня есть такая матрица:

a = 
    1    2
    3    4

Я хочу увеличить размер матрицы вдвое и создать что-то вроде этого:

aa = 
     1    1    2    2
     1    1    2    2
     3    3    4    4
     3    3    4    4

Таким образом, каждый элемент в первой матрице распространяется на четыре элемента в большей матрице.

a(i,j) == aa(2*i-1, 2*j-1)
       == aa(2*i  , 2*j-1)
       == aa(2*i-1, 2*j)
       == aa(2*i  , 2*j)

Есть ли для этого какие-либо предопределенные функции?

Определенно я могу сделать это двумя петлями, но я хочу самый простой и чистый способ!

2
Mehran 29 Янв 2013 в 09:06
2
 – 
Fabian Tamp
29 Янв 2013 в 09:12

1 ответ

Лучший ответ

Используйте kron - тензорный продукт Кронекера:

kron(a,ones(2))


ans =
 1     1     2     2
 1     1     2     2
 3     3     4     4
 3     3     4     4
7
bla 29 Янв 2013 в 09:18
1
Спасибо, А еще я нашла другой способ. с помощью resizem(a, 2).
 – 
Mehran
30 Янв 2013 в 11:12
1
Круто, не знал об этой функции. Тем не менее, я вижу, что необходим набор инструментов Mapping. Бьюсь об заклад, kron быстрее :)
 – 
bla
30 Янв 2013 в 11:18