• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

matlab数据预处理

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
%% 读取年数据 
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=numYY
end

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
    end
end
%%将年数据与月数据汇总
%% 全部特征数据补全(均值补全)
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

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
用MATLAB进行数据分析发布时间:2022-07-18
下一篇:
Matlab之数据处理发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap