只需更改num、raw_data和processed_data。
for m = 1:num %num为行数
y = raw_data(m,:)';
x = 1:size(y);
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
processed_data(m,:) = data(:,2);
end