您的当前位置:首页正文

matlab数据预处理

2024-03-27 来源:易榕旅网
matlab数据预处理

%% 读取年数据

function [XXnum,YYnum]=dataRead()

[numXX,txtXX,rawXX]=xlsread('XXyear.xlsx');[numYY,txtYY,rawYY]=xlsread('YYyear.xlsx');[m,n]=size(numXX);

XXnum=zeros(12,n); %12为2008到2020年的年数;n为年特征数YYnum=zeros(12,1); XXnum(1:11,:)=numXX;YYnum=numYY;end

%%拉格朗⽇插值补全法

function yy=lagrange(x1,y1,xx)

%本程序为Lagrange1插值,其中x1,y1

%为插值节点和节点上的函数值,输出为插值点xx的函数值,%xx可以是向量。syms x

n=length(x1);for i=1:n t=x1; t(i)=[];

L(i)=prod((x-t)./(x1(i)-t)); % L向量⽤来存放插值基函数(基函数逆序排在数组中)end

u=sum(L*y1);

p=simplify(u) % p是简化后的Lagrange插值函数(字符串)

yy=subs(p,x,xx); %p是以x为⾃变量的函数,并求xx处的函数值; yy=eval(yy);end

%% 年数据补全(lagrange插值)【2008-2020】

function XX1_bu=yeardata_pro() %XX1为预处理后的特征年度数据[XXnum,YYnum]=yeardataRead; %读取数据;XX0=bunan(XXnum); %零值对缺省数值补全;XX1=XX0; %拉格朗⽇/均值对零值补全; [m,n]=size(XX1);

for j=1:n %遍历所有特征 feature=XX1(:,j);

xnan_index=find(feature==0); %将feature中的nan位置存放在jnan_index中

inan=xnan_index; %某特征的nan的位置存放在inan中;(理解⽅便); ynan=YYnum(inan); %存放nan对应的函数值,也就是秦皇岛煤炭价格% feature(inan)=mean(xnotnan); %均值补全 for k=1:size(inan)

inan1=inan(k); %nan对应的⾏位置

ynan1=YYnum(inan1); %nan对应的⽬标值(秦皇岛煤炭价格) xnotnan4=XX1(inan1-6:inan1-1,j); ynotnan4=YYnum(inan1-6:inan1-1);

x_bu=lagrange(ynotnan4,xnotnan4,ynan1); XX1(inan1,j)=x_bu; feature(inan)=x_bu; XX1(:,j)=feature; end

XX1_bu=XX1;end

%% 读取全部特征数据

function [XXnum,YYnum]=alldataRead() %读取全部数据(年数据插值处理后)[numXX,txtXX,rawXX]=xlsread('XX_pro.xlsx');[numYY,txtYY,rawYY]=xlsread('YY.xlsx');XXnum=numXX(3:147,:);YYnum=numYYend

function [zzz]=bunan(zzz) %缺失值检测并填充为0[m,n]=size(zzz); %所有数据count=0; % 统计空数值;for i=1:m for j=1:n

count=count+isnan(zzz(i,j)); if isnan(zzz(i,j))==1

%if (isempty(zz2{i,j})==1|isnan(zz2{i,j}==1)) zzz(i,j)=0; end endend

%%将年数据与⽉数据汇总

%% 全部特征数据补全(均值补全)

function XX1=alldata_pro() %XX1为预处理后的特征年度数据[XXnum,YYnum]=alldataRead; %读取数据;

XX0=bunan(XXnum); %零值对缺省数值补全;

XX1=XX0; %拉格朗⽇/均值对零值补全; [m,n]=size(XX1);

for j=1:n %遍历所有特征 feature=XX1(:,j); countnan=0; xnan=[]; ynan=[];

xnotnan_index=find(feature);% x是原特征中不为0的值 xnotnan=feature(xnotnan_index);

% ynotnan=YYnum(xnotnan_index); %存放正常x对应的函数值,也就是秦皇岛煤炭价格 xnan_index=find(feature==0); %将feature中的nan位置存放在jnan_index中

inan=xnan_index; %某特征的nan的位置存放在inan中;(理解⽅便); countnan=size(xnan_index,1); %countnan 存放nan个数;

ynan=YYnum(inan); %存放nan对应的函数值,也就是秦皇岛煤炭价格 feature(inan)=mean(xnotnan); %均值补全 XX1(:,j)=feature; XX1_bu=XX1;end

因篇幅问题不能全部显示,请点此查看更多更全内容