MATLAB中“repmat”與“cat”函數的用法
作者:凱魯嘎吉 - 博客園 http://www.cnblogs.com/kailugaji/
1. repmat函數
>> z=repmat(5,2,3) z = 5 5 5 5 5 5 >> y=repmat([6,5;7,9],3,4) y = 6 5 6 5 6 5 6 5 7 9 7 9 7 9 7 9 6 5 6 5 6 5 6 5 7 9 7 9 7 9 7 9 6 5 6 5 6 5 6 5 7 9 7 9 7 9 7 9 >> x=repmat([1:5;2:6],2,3) x = 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 2 3 4 5 6 2 3 4 5 6 2 3 4 5 6 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 2 3 4 5 6 2 3 4 5 6 2 3 4 5 6
repmat函數中第一個值是元素(或向量、矩陣)的值,第二個值為行數,第三個為列數。
z=repmat(5,2,3),生成2行3列元素為5的矩陣。
y=repmat([6,5;7,9],3,4),生成3行5列元素為[6,5;7,9]的分塊矩陣。
x=repmat([1:5;2:6],2,3),生成3行5列元素為[1,2,3,4,5;2,3,4,5,6]的分塊矩陣。
2. cat函數
先生成一些大小相同的矩陣
>> a=repmat(5,3,5) a = 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 >> b=repmat(6,3,5) b = 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 >> c=repmat(7,3,5) c = 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 >> d=repmat(8,3,5) d = 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
下面為cat函數的用法
>> e=cat(1,a,b,c,d) e = 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 >> f=cat(2,a,b,c,d) f = 5 5 5 5 5 6 6 6 6 6 7 7 7 7 7 8 8 8 8 8 5 5 5 5 5 6 6 6 6 6 7 7 7 7 7 8 8 8 8 8 5 5 5 5 5 6 6 6 6 6 7 7 7 7 7 8 8 8 8 8 >> g=cat(3,a,b,c,d) g(:,:,1) = 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 g(:,:,2) = 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 g(:,:,3) = 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 g(:,:,4) = 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 >> h=cat(4,a,b,c,d) h(:,:,1,1) = 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 h(:,:,1,2) = 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 h(:,:,1,3) = 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 h(:,:,1,4) = 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
一般用到三維,四維及以上很少用。
e=cat(1,a,b,c,d),將a, b, c, d矩陣按列排。
f=cat(2,a,b,c,d),將a, b, c, d矩陣按行排。
g=cat(3,a,b,c,d),g是一個三維陣(3*5*4),前兩個維度和a, b, c, d的大小一樣,第三個維度為a, b, c, d矩陣的個數:4。
h=cat(4,a,b,c,d),h是一個四維陣,h(:,:,1,i)=h(:,:,i)。如下所示:
>> h(:,:,1) ans = 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 >> h(:,:,2) ans = 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 >> h(:,:,3) ans = 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 >> h(:,:,4) ans = 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
以上就是repmat與cat函數的簡單用法。