2012-08-24 33 views
5

Tôi có một ma trận như thế nàytạo ra một ma trận 'n' thời gian lớn hơn trong matlab

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

có bất kỳ chức năng mà làm cho hàng n lần và cột m lần trong matlab tôi có nghĩa là ví dụ cho n = 2 và m = 3 kết quả là:

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 

nhờ

Trả lời

9

Bạn có thể sử dụng sản phẩm Kronecker:

01.
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 

Để biết thêm thông tin, bạn có thể tìm kiếm trên wikipedia:

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

0

Đây là giải pháp của tôi:

%------------------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 
Các vấn đề liên quan