Main Content

nansum

(不推荐)总和,忽略 NaN

不推荐使用 nansum。请改用 MATLAB® 函数 sum。使用 sum 函数,您可以指定在计算时是包括还是省略 NaN 值。有关详细信息,请参阅兼容性注意事项

说明

示例

y = nansum(X) 返回 X 的元素的 sum,在删除所有 NaN 值后进行计算。

  • 如果 X 是向量,则 nansum(X)X 的所有非 NaN 元素的总和。

  • 如果 X 是矩阵,则 nansum(X) 是列总和组成的行向量,在删除 NaN 值后计算。

  • 如果 X 是多维数组,则 nansum 沿 X 的第一个非单一维度执行运算。此维度的大小变为 1,而所有其他维度的大小保持不变。nansum 删除所有 NaN 值。

有关 nansum 如何处理包含的值全为 NaN 的数组的信息,请参阅提示

示例

y = nansum(X,'all') 返回 X 的所有元素的总和,在删除 NaN 值后计算。

示例

y = nansum(X,dim) 返回沿 X 的运算维度 dim 的总和,该总和在删除 NaN 值后计算得出。

示例

y = nansum(X,vecdim) 返回向量 vecdim 中指定的维度上的总和。该函数在删除 NaN 值后计算总和。例如,如果 X 是矩阵,则 nansum(X,[1 2])X 中所有非 NaN 元素的总和,因为矩阵的每个元素都包含在由维度 1 和 2 定义的数组切片中。

示例

全部折叠

求具有缺失值的矩阵数据的列值总和。

X = magic(3);
X([1 6:9]) = NaN
X = 3×3

   NaN     1   NaN
     3     5   NaN
     4   NaN   NaN

y = nansum(X)
y = 1×3

     7     6     0

计算一个数组中所有值的总和,忽略缺失值。

创建一个包含一些缺失值的 2×4×3 数组 X

X = reshape(1:24,[2 4 3]);
X([5:6 20]) = NaN
X = 
X(:,:,1) =

     1     3   NaN     7
     2     4   NaN     8


X(:,:,2) =

     9    11    13    15
    10    12    14    16


X(:,:,3) =

    17    19    21    23
    18   NaN    22    24

X 的元素的总和。

y = nansum(X,'all')
y = 269

通过指定沿第二个维度计算总和,求具有缺失值的矩阵数据的行值总和。

X = magic(3);
X([1 6:9]) = NaN
X = 3×3

   NaN     1   NaN
     3     5   NaN
     4   NaN   NaN

y = nansum(X,2)
y = 3×1

     1
     8
     4

求多维数组在多个维度上的和。

创建一个包含一些缺失值的 2×4×3 数组 X

X = reshape(1:24,[2 4 3]);
X([5:6 20]) = NaN
X = 
X(:,:,1) =

     1     3   NaN     7
     2     4   NaN     8


X(:,:,2) =

     9    11    13    15
    10    12    14    16


X(:,:,3) =

    17    19    21    23
    18   NaN    22    24

通过将维度 1 和 2 指定为运算维度,求出 X 的每页的总和。

ypage = nansum(X,[1 2])
ypage = 
ypage(:,:,1) =

    25


ypage(:,:,2) =

   100


ypage(:,:,3) =

   144

例如,ypage(1,1,1)X(:,:,1) 中非 NaN 元素的总和。

通过将维度 2 和 3 指定为运算维度,求出每个 X(i,:,:) 切片中元素的总和。

yrow = nansum(X,[2 3])
yrow = 2×1

   139
   130

例如,yrow(2)X(2,:,:) 中非 NaN 元素的总和。

输入参数

全部折叠

输入数据,指定为标量、向量、矩阵或多维数组。

如果 X 是空数组,则 nansum(X)0

数据类型: single | double

用于运算的维度,指定为正整数标量。如果不指定值,则默认值是大小不等于 1 的第一个数组维度。

dim 表示其长度减小到 1 的维度。size(y,dim) 为 1,而所有其他维度的大小保持不变。

假设有一个二维数组 X

  • 如果 dim 等于 1,则 nansum(X,1) 返回一个包含每列的总和的行向量。

  • 如果 dim 等于 2,则 nansum(X,2) 返回一个包含每行的总和的列向量。

如果 dim 大于 ndims(X) 或者如果 size(X,dim) 为 1,则 nansum 返回 X,用 0 值代替任何缺失值。

数据类型: single | double

维度向量,指定为正整数向量。vecdim 的每个元素表示输入数组 X 的一个维度。输出 y 的指定运算维度长度为 1。Xy 的其他维度长度相同。

例如,如果 X 为 2×3×3 数组,则 nansum(X,[1 2]) 返回 1×1×3 数组。输出数组的每个元素均为 X 的对应页上的元素的总和。

Mapping of input dimension of 2-by-3-by-3 to output dimension of 1-by-1-by-3

数据类型: single | double

输出参数

全部折叠

总和值,以标量、向量、矩阵或多维数组形式返回。

提示

  • nansum 计算全部由 NaN 值组成的数组的总和时,一旦 NaN 值被删除,则数组为空,因此其余元素的总和为 0。输出 0 不是 NaN 值的和。

扩展功能

版本历史记录

在 R2006a 之前推出

全部折叠

R2020b: 不推荐使用 nansum

不推荐使用 nansum。请改用 MATLAB 函数 sum。目前没有删除 nansum 的计划。

要更新您的代码,请将函数名称 nansum 的实例更改为 sum。然后为 nanflag 输入参量指定 'omitnan' 选项。

nansum 函数相比,sum 函数具有以下优势:

  • sum 提供更多扩展功能,支持 tall 数组、GPU 数组、分布数组、C/C++ 代码生成和 GPU 代码生成。

  • sum 返回具有指定数据类型的输出值。

另请参阅

|