2012-08-24 9 views
5

mam matrycy, jak toaby macierz „n” razem większe w Matlab

1 2 3 4 
2 3 4 5 
3 4 5 6 

jest jakiś funkcja sprawia, że ​​rzędy n razy i M kolumnach razy w Matlab to znaczy na przykład w N = 2 oraz m = 3 wynik to:

1 1 1 2 2 2 3 3 3 4 4 4 
1 1 1 2 2 2 3 3 3 4 4 4 
2 2 2 3 3 3 4 4 4 5 5 5 
2 2 2 3 3 3 4 4 4 5 5 5 
3 3 3 4 4 4 5 5 5 6 6 6 
3 3 3 4 4 4 5 5 5 6 6 6 

dzięki

Odpowiedz

9

można użyć delty Kroneckera:

A=[1 2 3 4;5 6 7 8;9 10 11 12]; 
kron(A,ones(2,3)) 
ans = 
    1  1  1  2  2  2  3  3  3  4  4  4 
    1  1  1  2  2  2  3  3  3  4  4  4 
    5  5  5  6  6  6  7  7  7  8  8  8 
    5  5  5  6  6  6  7  7  7  8  8  8 
    9  9  9 10 10 10 11 11 11 12 12 12 
    9  9  9 10 10 10 11 11 11 12 12 12 

Aby uzyskać więcej informacji, można spojrzeć na wikipedii:

http://en.wikipedia.org/wiki/Kronecker_product

0

Oto moje rozwiązanie:

%------------------data----------------- 
>> mat = [1 2 3 4;2 3 4 5;3 4 5 6] 
mat = 
    1  2  3  4 
    2  3  4  5 
    3  4  5  6 
>> [m,n] = deal(3,2) 
m = 
    3 
n = 
    2 
%----------------solution---------------- 
>> col = meshgrid(1:size(mat,2),1:m); 
>> row = meshgrid(1:size(mat,1),1:n); 
>> mat(row,col) 
ans = 
    1  1  1  2  2  2  3  3  3  4  4  4 
    1  1  1  2  2  2  3  3  3  4  4  4 
    2  2  2  3  3  3  4  4  4  5  5  5 
    2  2  2  3  3  3  4  4  4  5  5  5 
    3  3  3  4  4  4  5  5  5  6  6  6 
    3  3  3  4  4  4  5  5  5  6  6  6 
Powiązane problemy