⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 原始数据的光滑处理.txt

📁 灰色模型GM(1,1)原始数列经过光滑优化
💻 TXT
字号:
%这种方法稍微好一些
clear
x=input('请输入数据');
n=length(x);
for i=2:n-1
y(i)=(x(i)*2+x(i-1)+x(i+1))/4;
end
y(1)=x(1);y(n)=x(n);


n=length(y);
yy=ones(n,1);   %这里是说yy是一个n行1列的列阵
yy(1)=y(1);
for i=2:n
    yy(i)=yy(i-1)+y(i);
end


B=ones(n-1,2);
for i=1:(n-1)
    B(i,1)=-(yy(i)+yy(i+1))/2;
    B(i,2)=1;
end

%好,到这里b矩阵建好了


BT=B';%这个应该就是B的转制吧

for j=1:n-1
    YN(j)=y(j+1);%你前面也没有定义过yn是个什么东西,是否就是说只要出现yn(j)的形式,那么就默认yn为向量

end
YN=YN';
A=inv(BT*B)*BT*YN;%奥,原来求逆运算是使用inv这样一个函数
a=A(1);
u=A(2);

%这样系数就出来了



t=u/a;
t_test=input('请输入需要预测个数:');
i=1:t_test+n-1;
yys(i+1)=(y(1)-t).*exp(-a.*i)+t;
yys(1)=y(1);
for j=n+t_test:-1:2
    ys(j)=yys(j)-yys(j-1);
end
ys





%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%对数变换法-----没用,预测值比原来没有光滑处理时还要大呢

clear
x=input('请输入数据');
n=length(x);
for i=1:n
y(i)=log(x(i));
end




n=length(y);
yy=ones(n,1);   %这里是说yy是一个n行1列的列阵
yy(1)=y(1);
for i=2:n
    yy(i)=yy(i-1)+y(i);
end


B=ones(n-1,2);
for i=1:(n-1)
    B(i,1)=-(yy(i)+yy(i+1))/2;
    B(i,2)=1;
end

%好,到这里b矩阵建好了


BT=B';%这个应该就是B的转制吧

for j=1:n-1
    YN(j)=y(j+1);%你前面也没有定义过yn是个什么东西,是否就是说只要出现yn(j)的形式,那么就默认yn为向量

end
YN=YN';
A=inv(BT*B)*BT*YN;%奥,原来求逆运算是使用inv这样一个函数
a=A(1);
u=A(2);

%这样系数就出来了



t=u/a;
t_test=input('请输入需要预测个数:');
i=1:t_test+n-1;
yys(i+1)=(y(1)-t).*exp(-a.*i)+t;
yys(1)=y(1);
for j=n+t_test:-1:2
    ys(j)=yys(j)-yys(j-1);
end

for i=1:(n+t_test)
gg(i)=exp(ys(i));
end
gg

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%开n次方变换法,这个方法也不行
clear
x=input('请输入数据');
y=x.^0.5;


n=length(y);
yy=ones(n,1);   %这里是说yy是一个n行1列的列阵
yy(1)=y(1);
for i=2:n
yy(i)=yy(i-1)+y(i);
end


B=ones(n-1,2);
for i=1:(n-1)
    B(i,1)=-(yy(i)+yy(i+1))/2;
    B(i,2)=1;
end

%好,到这里b矩阵建好了


BT=B';%这个应该就是B的转制吧

for j=1:n-1
    YN(j)=y(j+1);%你前面也没有定义过yn是个什么东西,是否就是说只要出现yn(j)的形式,那么就默认yn为向量

end
YN=YN';
A=inv(BT*B)*BT*YN;%奥,原来求逆运算是使用inv这样一个函数
a=A(1);
u=A(2);

%这样系数就出来了



t=u/a;
t_test=input('请输入需要预测个数:');
i=1:t_test+n-1;
yys(i+1)=(y(1)-t).*exp(-a.*i)+t;
yys(1)=y(1);
for j=n+t_test:-1:2
    ys(j)=yys(j)-yys(j-1);
end
gg=ys.^2


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -