gpt4 book ai didi

matlab - 计算二维数组每一行中非 NaN 值的数量

转载 作者:太空宇宙 更新时间:2023-11-03 20:16:05 25 4
gpt4 key购买 nike

我有一个这样的矩阵:

A = [1,  2,  3,  4,  5,  NaN,  NaN,  NaN,  NaN,  NaN;
1, 2, 3, 4, 5, 6, 7, NaN, NaN, NaN;
1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

我想知道如何计算每行中不包括任何 NaN 的值的数量。所以我会得到如下输出:

output = [5;
7;
10;]

最佳答案

如果 A 是一个二维数组,例如

A = [1,  2,  3,  4,  5,  NaN,  NaN,  NaN,  NaN,  NaN;
1, 2, 3, 4, 5, 6, 7, NaN, NaN, NaN;
1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

并且您想计算A 的每一行中NaN 条目的数量,您可以简单地使用

>> sum(~isnan(A), 2)

ans =
5
7
10

分割

  1. isnan(A) 返回一个与A大小相同的逻辑数组,其中(logical1表示一个NaN0 一个非 NaN

    请注意,您必须在此处使用isnan 函数。特别是,表达式 A == ~NaN 是无用的:它只会返回一个与 A 大小相同但充满(逻辑)0 的逻辑数组 的。为什么?因为,根据浮点运算,NaN == NaN 总是返回“false”(即逻辑 0,在 MATLAB 中)。

  2. 然后,通过对其应用 MATLAB 的非运算符 (~),您将获得一个与 A 大小相同的逻辑数组,其中 1 表示非NaN0 表示NaN

  3. 最后,sum(~isnan(A), 2) 返回一个列向量,其中第 i 个条目对应于逻辑 1 的数量在 ~isnan(A) 的第 i 行。

生成的列向量正是您想要的:A 中非 NaN 条目的逐行计数。

关于matlab - 计算二维数组每一行中非 NaN 值的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27963745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com