由于在处理多维数据时经常会遇到求每一维数据的均值或者和。所以这里记录一下这几个函数的用法。
mean函数
mean函数是用来求矩阵或者向量的均值的。
其调用形式为:M = mean(A,dim)
参数说明:
A:要求均值的矩阵
dim:在哪一维上求均值,默认值为1,值得注意的是,matlab维度起始的数字就是1,而不是从0开始的。如果值为1则是求每一列的均值,如果值为2则是求每一行的均值。
% 生成2×5的2维数据
>>data = [1,1,2,4,2;1,3,3,4,4];
>> mean(data)
ans =
1.0000 2.0000 2.5000 4.0000 3.0000
>> mean(data,1)
ans =
1.0000 2.0000 2.5000 4.0000 3.0000
>> mean(data,2)
ans =
2
3
sum函数
sum函数是用来求矩阵或者向量的和的,与上面讲的mean使用方法基本差不多。
调用形式:S=sum(A,dim);
参数说明:A表示要求和的矩阵。
dim表示在哪一个维度上求和,等于1或者2,1表示每一列进行求和,2表示每一行进行求和;表示每列求和还是每行求和。
S是返回的结果。
% 生成2×5的2维数据
>>data = [1,1,2,4,2;1,3,3,4,4];
>> s1 = sum(data)
s1 =
2 4 5 8 6
>> s2=sum(data,1)
s2 =
2 4 5 8 6
>> s3 = sum(data,2)
s3 =
10
15
repmat函数
repmat函数和python的tile函数很像,是通过重复原始矩阵或者向量来达到扩展矩阵或者向量的目的。
调用形式:
B = repmat(A,m,n)
B = repmat(A,[m n])
B = repmat(A,[m n p…])
参数说明:
A需要扩展的矩阵或者向量,在扩展时将A看做一个整体。
m:指定A这个整体扩展成m行。
n:指定A这个整体扩展成n列。
p:指定扩展成几通道的矩阵,以此类推。
>> data = [1;2]
data =
1
2
>> m1 =repmat(data,2,3)
% 最终结果矩阵里有6个data向量
m1 =
1 1 1
2 2 2
1 1 1
2 2 2
>> m1 =repmat(data,2,3,2)
m1(:,:,1) =
1 1 1
2 2 2
1 1 1
2 2 2
m1(:,:,2) =
1 1 1
2 2 2
1 1 1
2 2 2