函数功能
求数组元素的总和
使用方法
B = sum(A)
返回数组A不同维数的总和。
如果A是一个向量,sum(A) 返回所有元素的总和。
如果A是一个矩阵,sum(A) 把A的列作为向量,返回一个包含每一列所有元素的总和的行向量。
如果A是一个多维数组,sum(A) 把没一维看做一个数组,返回一个行向量数组。
B = sum(A,dim)
沿着A的每一维计算总和用指定标量dim,dim是一个从1到N的整数值,其中N是A的维数。dim为1就是计算A的每一列的总和,2计算A的每一行的总和,以此类推。
B = sum(..., 'double')和B = sum(..., dim,'double')
在双精度下(double)执行相加求和,返回double类型的结果,即使A是single数据类型或者integer数据类型。默认的是integer数据类型。
B = sum(..., 'native')和B = sum(..., dim,'native')
在native数据类型下执行相加求和,返回相同类型的结果,默认的是single和double.数据类型。
备注
sum(diag(X)) 是求X的迹。
应用举例
三阶幻方为:
M = magic(3)
M =
8 1 6
3 5 7
4 9 2
因为三阶幻方每一列元素总和是相同的。
sum(M) =
15 15 15
想求每一行元素的的总和,可以用转置或者用dim参数。
转置:
sum(M') =
15 15 15
用dim参数:
sum(M,1)
ans =
15 15 15
支持非double数据类型
sum函数不仅仅支持double类型数据。
single数据类型:
sum函数可以应用到single数据类型并返回一个single类型的结果。比如:
sum(single([2 5 8]))
ans =
15
class(ans)
ans =
single
Integer数据类型
sum函数应用到以下Integer数据类型时,MATLAB软件返回一个double数据类型的结果:
int8 and uint8
int16 and uint16
int32 and uint32
例如:
sum(single([2 5 8]));
class(ans)
ans =
single
sum([2 5 8]);
class(ans)
ans =
double
如果你想MATLAB对Integer数据类型的结果是相同的Integer数据类型,可以用:
sum(int8([2 5 8], 'native');
class(ans)
ans =
int8
求数组元素的总和
使用方法
B = sum(A)
返回数组A不同维数的总和。
如果A是一个向量,sum(A) 返回所有元素的总和。
如果A是一个矩阵,sum(A) 把A的列作为向量,返回一个包含每一列所有元素的总和的行向量。
如果A是一个多维数组,sum(A) 把没一维看做一个数组,返回一个行向量数组。
B = sum(A,dim)
沿着A的每一维计算总和用指定标量dim,dim是一个从1到N的整数值,其中N是A的维数。dim为1就是计算A的每一列的总和,2计算A的每一行的总和,以此类推。
B = sum(..., 'double')和B = sum(..., dim,'double')
在双精度下(double)执行相加求和,返回double类型的结果,即使A是single数据类型或者integer数据类型。默认的是integer数据类型。
B = sum(..., 'native')和B = sum(..., dim,'native')
在native数据类型下执行相加求和,返回相同类型的结果,默认的是single和double.数据类型。
备注
sum(diag(X)) 是求X的迹。
应用举例
三阶幻方为:
M = magic(3)
M =
8 1 6
3 5 7
4 9 2
因为三阶幻方每一列元素总和是相同的。
sum(M) =
15 15 15
想求每一行元素的的总和,可以用转置或者用dim参数。
转置:
sum(M') =
15 15 15
用dim参数:
sum(M,1)
ans =
15 15 15
支持非double数据类型
sum函数不仅仅支持double类型数据。
single数据类型:
sum函数可以应用到single数据类型并返回一个single类型的结果。比如:
sum(single([2 5 8]))
ans =
15
class(ans)
ans =
single
Integer数据类型
sum函数应用到以下Integer数据类型时,MATLAB软件返回一个double数据类型的结果:
int8 and uint8
int16 and uint16
int32 and uint32
例如:
sum(single([2 5 8]));
class(ans)
ans =
single
sum([2 5 8]);
class(ans)
ans =
double
如果你想MATLAB对Integer数据类型的结果是相同的Integer数据类型,可以用:
sum(int8([2 5 8], 'native');
class(ans)
ans =
int8