MATLAB中“repmat”与“cat”函数的用法
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函数的简单用法。