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函數的簡單用法。
