logo资料库

时间序列MATLAB程序.docx

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
时间序列 移动平均法 clc,clear y=[533.8 574.6 606.9 649.8 1102.7]; m=length(y); n=[4,5]; for i=1:length(n) %n 为移动平均的项数 705.1 772.0 816.4 892.7 963.9 1015.1 for j=1:m-n(i)+1 %由于 n 的取值不同,下面使用了细胞数组
yhat{i}(j)=sum(y(j:j+n(i)-1))/n(i); end y12(i)=yhat{i}(end); %提出第 12 月份的预测值 s(i)=sqrt(mean((y(n(i)+1:end)-yhat{i}(1:end-1)).^2)); %求预测的标准误差 end y12, s %分别显示两种方法的预测值和预测的标准误差 指数平滑 一次指数平滑 程序: clc,clear yt=load('dianqi.txt'); n=length(yt); alpha=[0.2 0.5 0.8]; %输入 a 的值 m=length(alpha) yhat(1,[1:m])=(yt(1)+yt(2))/2; %求第一个预测值 索引 for i=2:n %读取 dianqi.txt 的数据, %求 yt 的长度 yhat(i,:)=alpha*yt(i-1)+(1-alpha).*yhat(i-1,:);
end yhat %求预测值 err=sqrt(mean((repmat(yt,1,m)-yhat).^2)) %求预测的标准误差 xlswrite('dianqi.xls',yhat) %把预测数据写到 Excel 文件,准备在 word 表格中使用 yhat1988=alpha*yt(n)+(1-alpha).*yhat(n,:) %求 1988 的预测值 二次指数平滑
程序 clc,clear yt=load('c:\Users\asus\Desktop\剑魔\fadian.txt'); %原始发电总量数据以列向量 的方式存放在纯文本文件中 n=length(yt); alpha=0.3; st1(1)=yt(1); st2(1)=yt(1); for i=2:n st1(i)=alpha*yt(i)+(1-alpha)*st1(i-1); st2(i)=alpha*st1(i)+(1-alpha)*st2(i-1); end xlswrite('fadian.xls',[st1',st2']) %把数据写入表单 Sheet1 中的前两列 at=2*st1-st2; bt=alpha/(1-alpha)*(st1-st2); yhat=at+bt; %最后的一个分量为 1986 年的预测值 xlswrite('fadian.xls',yhat','Sheet1','C2') %把预测值写入第 3 列 str=['C',int2str(n+2)]; %准备写 1987 年预测值位置的字符串 xlswrite('fadian.xls',at(n)+2*bt(n),'Sheet1',str)%把 1987 年预测值写到相应位 置 yt=load('c:\Users\asus\Desktop\剑魔\fadian.txt'); %原始发电总量数据以列向量 的方式存放在纯文本文件中 n=length(yt); alpha=0.3; st1(1)=yt(1);
st2(1)=yt(1); for i=2:n st1(i)=alpha*yt(i)+(1-alpha)*st1(i-1); st2(i)=alpha*st1(i)+(1-alpha)*st2(i-1); end xlswrite('fadian.xls',[st1',st2']) %把数据写入表单 Sheet1 中的前两列 at=2*st1-st2; bt=alpha/(1-alpha)*(st1-st2); yhat=at+bt; %最后的一个分量为 1986 年的预测值 xlswrite('fadian.xls',yhat','Sheet1','C2') %把预测值写入第 3 列 str=['C',int2str(n+2)]; %准备写 1987 年预测值位置的字符串 xlswrite('fadian.xls',at(n)+2*bt(n),'Sheet1',str)%把 1987 年预测值写到相应位 置
分享到:
收藏