sum函数在matlab中的应用

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



猜你喜欢

转载自blog.csdn.net/sp353846548/article/details/80692256