NaN是什么,怎么处理 --matlab

NaN (Not a Number)

NaN (不是一个数),当你处理不同,多种多样的数据时,会经常碰到NaN ,NaN 是0/0 或者是导入了一个字符串作为数值。也可能是无穷或者是当你插入了一个超出给定范围的数。接下来我们看下NaN 有啥性质,以及如何处理

A_var = [-8 10 NaN 9 4 -4 -7; 9 NaN 9 4 -10 9 0; -8 10 NaN 5 -10 -1 NaN] 
A_var =
-8 10 NaN 9 4 -4 -7
 9 NaN 9 4 -10 9 0
-8 10 NaN 5 -10 -1 NaN

先创造一个含NaN 的数组

>> sum(A_var)%sum()是一个可以算出每列和的函数
ans = -7 NaN NaN 18 -16 4 NaN

可以看出有NaN 的列和全为NaN

怎么把这NaN除去,第一个你自己手工找出索引
>> A_var([7 9 21])=[0, 0, 0] % All at once or % A_var([7 9 21])=0
> A_var =
-8 10 0 9 4 -4 -7 
9 0 9 4 -10 9 0
-8 10 0 5 -10 -1 0

然后你再试下sum()
或这

nansum()含NaN求和

试下

nansum(A_Var)

这里还有一堆关于NaN的函数,尝试自己去试下

nanmax(), nanmean(), nanmedian(), nanmin(), nanstd(), and nanvar()

找到NaN的位置
Index2=ismissing(A_var) %Identifies all missing elements hidden behind NaN
>> A_var(Index2) ans = NaN NaN NaN NaN
>> A_var(Index2)=0 
>A_var =
-8 10 0 9 4 -4 -7 
9 0 9 4 -10 9 0
-8 10 0 5 -10 -1 0

或者用find()函数

B_var = randi([0, 25], 7);
IndexB = find(B_var>3 & B_var<9)


用类似的find方法去找index就行

  • 10
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB 中,可以使用插值方法来处理边界值问题中的 `NaN` 缺失据。插值是一种将一组离散据转换为连续函的方法,可以用来估计缺失据的值。 以下是一些处理缺失据的方法: 1. 线性插值:线性插值是一种简单的插值方法,它假设据在插值区间内以线性方式变化。在 MATLAB 中,可以使用 `interp1` 函进行线性插值。例如,下面的代码将在据中插值缺失的据点: ```matlab % 创建含有缺失据的据 x = 1:10; y = [1, 2, NaN, 4, 5, NaN, 7, 8, 9, NaN]; % 线性插值 y_interp = interp1(x(~isnan(y)), y(~isnan(y)), x, 'linear'); ``` 在上面的代码中,使用 `~isnan(y)` 筛选出不是 `NaN` 的据,然后使用 `interp1` 函进行线性插值。 2. 样条插值:样条插值是一种更高阶的插值方法,它可以用更平滑的曲线拟合据。在 MATLAB 中,可以使用 `interp1` 函的 `'spline'` 选项进行样条插值。例如,下面的代码将在据中插值缺失的据点: ```matlab % 创建含有缺失据的据 x = 1:10; y = [1, 2, NaN, 4, 5, NaN, 7, 8, 9, NaN]; % 样条插值 y_interp = interp1(x(~isnan(y)), y(~isnan(y)), x, 'spline'); ``` 在上面的代码中,使用 `~isnan(y)` 筛选出不是 `NaN` 的据,然后使用 `interp1` 函的 `'spline'` 选项进行样条插值。 3. 其他插值方法:除了线性插值和样条插值之外,还可以使用其他的插值方法,例如多项式插值、三次样条插值等。在 MATLAB 中,可以使用 `interp1` 函的不同选项进行不同的插值方法。具体选项可以参考 MATLAB 的文档。 以上是处理边界值问题中的 `NaN` 缺失据的一些方法,具体选择哪种方法需要根据据情况和需求来决定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值