项目场景:
缺失值处理中遇到一列数据有间断、连续缺失值,且局部满足线性性,因此决定采用线性插值.又因为数据有303个缺失值,为了方便希望插值能自动填入空缺值.
解决方案:
以下为matlab代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47#函数功能:对数据进行拟合插值,并自动将插值替换NaN #数据插值拟合 """ 使用方法: 在matlab导入含间断的空缺值的列,赋值给y即可。即,将y用自己的数据替换,注意维度要求行维不可变,列维可变。 """ y = glucose %glucose为导入的某列数据,维度(1,3000) x = 1:size(y) % 生成1:3000的数据,维度(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内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复