我是靠谱客的博主 爱撒娇酸奶,最近开发中收集的这篇文章主要介绍matlab的缺失值处理---插值&自动填充项目场景:解决方案:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

项目场景:

缺失值处理中遇到一列数据有间断、连续缺失值,且局部满足线性性,因此决定采用线性插值.又因为数据有303个缺失值,为了方便希望插值能自动填入空缺值.

解决方案:

以下为matlab代码

#函数功能:对数据进行拟合插值,并自动将插值替换NaN
#数据插值拟合
"""
使用方法:
在matlab导入含间断的空缺值的列,赋值给y即可。即,将y用自己的数据替换,注意维度要求行维不可变,列维可变。
"""
y = glucose
%glucose为导入的某列数据,维度(1,3000)
x = 1:size(y)
% 生成13000的数据,维度(1,3000)
data = [x',y]
%data维度(3000,2)
% isnan(y)
%判断是否为NaN,是则为1
%以下为核心部分
d=[]
d_b =[]
for i = 1:size(y)
if isnan(data(i,2))
%是NaN返回1
d = [d,data(i,1)]
%d为空值存在的索引
else
d_b = [d_b,data(i,1)]
%d为非空值存在的索引
end
end
train_x =x(d_b)
%train_x为x对应的所有非空数据
train_y = y(d_b)
%train_y为y对应的所有非空数据
cha = x(d)
%cha为待插值序号(可看作NaN的索引位置)
pre =interp1(train_x,train_y,cha,'linear')
%%数据自动插入
%本质上就是NaN值用插值覆盖掉,然后将填充完的数据data保存
%承接上面核心部分
account =1
for i = 1:size(y)
if isnan(data(i,2))%是NaN返回1
data(i,2)=pre(account)%d为空值存在的索引
account =account+1
else
d_b = [d_b,data(i,1)]%d为非空值存在的索引
end
end

欢迎提问,知无不言。

最后

以上就是爱撒娇酸奶为你收集整理的matlab的缺失值处理---插值&自动填充项目场景:解决方案:的全部内容,希望文章能够帮你解决matlab的缺失值处理---插值&自动填充项目场景:解决方案:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部