matlab算的数太小会出现nan,matlab – 计算2D数组每行中非NaN值的数量

如果A是2D阵列,例如

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

分解

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

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

>然后,通过应用MATLAB的非运算符(〜),得到一个与A大小相同的逻辑数组,其中1表示非NaN,0表示NaN.

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值