笔记 matlab中isnan()函数和 ==NAN,

在升级到MATLAB2021后,使用旧代码进行数据处理时遇到错误,提示NAN比较应使用isnan函数。原来代码中直接使用weight==NaN来检查并替换NAN值,现在修正为使用isnan(weight)。isnan函数创建了一个逻辑数组,当数组元素为NAN时返回真,可用于有效地处理和过滤数据中的NAN值。修正后的代码能更准确地识别和处理NAN,保持数据处理的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

          安装了新版本的matlab2021, 在用之前的代码做数据处理时报错,提示 NAN 的比较应该用 isnan 函数

情景

          修改前,我是想利用 relieff 计算特征的分数(为了方便我叫他权重),但是 relieff 计算出来有负数和not a number(即所谓的 NaN) ,所以需要对该情况进行处理。

sampleNumber = size(TrainX_data,1);       % 样本数
[~,weight] = relieff(TrainX_data,TrainY_data,sampleNumber,'method','classification');
weight(weight<0) = 0;                     % 把权重小于0的当成0
weight(weight == NaN) = 0;                % 把nan的当成0

          换成isnan 函数后

sampleNumber = size(TrainX_data,1);       % 样本数
[~,weight] = relieff(TrainX_data,TrainY_data,sampleNumber,'method','classification');
weight(weight<0) = 0;                     % 把权重小于0的当成0
weight(isnan(weight)) = 0;                % 把nan的当成0

补充

          isnan(A)A == NaN 其实都是一个意思,返回一个逻辑数组,若A的元素为NaN(非数值),在对应位置上返回逻辑1(真),否则返回逻辑0(假)。

示例

isnan([5 NaN Inf -Inf -10])


ans =

  1×5 logical 数组

   0   1   0   0   0

          一般使用场景也是我开始的那样,对数据中的异常数据 NaN 做限制,或是去掉,或是用其他的填充(最小值填充,这一维度的均值填充,0填充等等)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中南自动化学院至渝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值