sum函数
今天在运行程序的时候偶然看到一个sum函数,和平时用的不太一样,那么用例子总结一下这个函数:
A =
1 1 2 4 5
2 1 3 4 1
1 3 4 2 5
>> x1 = sum(A) %对矩阵的列求和,也可以写成sum(A,1)
x2 = sum(A,2) %对矩阵的行求和
x3 = sum(A(:)) %对矩阵的每个元素求和
x4 = sum(A(1:8)) %对矩阵从第1个元素开始,到第8个元素求和,顺序是按照列元素计算的,就是先从第一列的第一个元 素,第一列数完了之后再找第二列,这里代表 1 + 2 + 1 + 1 + 1 + 3 + 2 + 3
x5 = sum(A(3:4)) %对矩阵第3个元素到第4个元素,这里是指第A31 + A12 也就是 1 + 1
那么结果如下:
x1 =
4 5 9 10 11
x2 =
13
11
15
x3 =
39
x4 =
14
x5 =
2
以上 x4 和 x5 是新看到的,觉得挺有意思,做个总结。
下面是转载部分,转载出处:https://jingyan.baidu.com/article/adc815137458fdf723bf73bd.html
对数据类型的要求:
S = sum(___,outtype)指定输出结果的数据类型
可选字符串参数为'double','default'和'native'
一般来说,默认是'default'
有时候我们对整数求和,想要结果输出为double类型,就可以用这个参数
比如:
>> a = single(1:4)
a =
1 2 3 4
>> class(sum(a,'double'))
ans =
double
>> class(sum(a))
ans =
single
Matlab的数据类型虽然比较全面,但是数据类型转化和其他语言不是完全一致,因此用的时候需要小心处理
S = sum(___,nanflag)是否忽略NaN值 %%这里的NaN是 not a number
有时候在求和的时候,数据中有NaN值影响,导致计算结果出现NaN,一般的处理方式是用isnan函数排除nan值,有了这个选项,就简单了
如:
>> a = rand(1,6);a(randperm(6,2)) = NaN
a =
0.7060 0.0318 NaN 0.0462 0.0971 NaN
>> sum(a)
ans =
NaN
>> sum(a,'omitnan')
ans =
0.8812