时间序列MATLAB程序
- 格式:docx
- 大小:291.03 KB
- 文档页数:6
在MATLAB中,可以使用以下步骤来实现Fisher最优分割算法对时间序列进行聚类:1. 确定聚类数:使用Fisher最优分割算法对时间序列进行聚类,需要先确定聚类数。
可以通过交叉验证等方法来选择最优的聚类数。
2. 建立Fisher矩阵:使用MATLAB中的Fisher矩阵函数可以快速计算出Fisher矩阵。
Fisher 矩阵是一个方阵,其中每个元素表示两个变量之间的相关性。
可以使用以下代码来计算Fisher矩阵:定义时间序列数据data = [1 2 3 4 5; 6 7 8 9 10; 11 12 13 14 15];计算Fisher矩阵F = fisher(data, 'Distance', 'euclidean');在这个示例中,我们使用Fisher函数计算Fisher矩阵,并将'euclidean'作为距离度量方式。
3. 计算最优分割点:使用MATLAB中的fminsearch()函数可以找到Fisher矩阵的最小值。
可以使用以下代码来计算最优分割点:定义最小值搜索函数fun = (x) -sum(x.*F);计算最小值x0 = [0.5 0.5];x = fminsearch(fun, x0);输出最优分割点disp(['最优分割点为:', num2str(x(1)) ', ', num2str(x(2))]);在这个示例中,我们将Fisher矩阵作为输入,并使用fminsearch()函数找到Fisher矩阵的最小值。
最终,我们将得到最优分割点,并将其打印出来。
4. 对时间序列进行聚类:使用MATLAB中的cluster()函数可以将时间序列聚类到相应的聚类中。
可以使用以下代码来进行聚类:定义聚类函数clustFunc = (x) cluster(x, x(1), x(2));对时间序列进行聚类clustLabels = cluster(data, x(1), x(2));输出聚类标签disp(['时间序列的聚类标签为:', num2str(clustLabels)]);在这个示例中,我们将时间序列数据和最优分割点作为输入,并使用cluster()函数将时间序列聚类到相应的聚类中。
matlab 时间序列高斯分布拟合在Matlab中,我们可以使用高斯分布来拟合时间序列数据。
高斯分布(也称为正态分布)是一种常见的概率分布,它描述了大部分自然现象的分布情况。
首先,我们需要准备时间序列数据。
假设我们有一个包含n个数据点的时间序列,可以使用一个向量表示,记为x。
然后,我们可以使用Matlab的拟合函数fitdist来拟合高斯分布。
拟合的过程可以通过以下代码完成:```% 导入时间序列数据x = [数据点1, 数据点2, ..., 数据点n];% 拟合高斯分布pd = fitdist(x', 'Normal');% 获取拟合结果mu = pd.mu; % 均值sigma = pd.sigma; % 标准差% 绘制原始数据和拟合曲线hist(x);hold on;x_values = linspace(min(x), max(x), 100);y_values = pdf(pd, x_values);plot(x_values, y_values, 'r', 'LineWidth', 2);hold off;```在上面的代码中,fitdist函数用于拟合高斯分布。
它的第一个参数是数据x的转置,因为fitdist要求数据是一个列向量。
fitdist 的第二个参数指定要拟合的概率分布类型,这里我们选择了'Normal'表示高斯分布。
拟合完成后,我们可以使用mu和sigma获取拟合结果的均值和标准差。
另外,我们使用pdf函数绘制拟合的高斯曲线。
通过以上步骤,我们可以在Matlab中拟合时间序列数据的高斯分布,并可视化拟合结果。
时间序列matlab代码时间序列分析是一种重要的数据分析方法,它用于研究随时间变化的数据序列。
在这篇文章中,我们将介绍如何使用MATLAB进行时间序列分析,并展示一些常用的时间序列分析方法和技巧。
我们需要明确什么是时间序列。
时间序列是一系列按时间顺序排列的数据观测值。
这些数据观测值可以是连续的,也可以是离散的。
比如,股票价格、气温、经济指标等都可以被视为时间序列数据。
在MATLAB中,有一些常用的函数可以用来处理时间序列数据。
其中最常见的函数是`timeseries`函数,它可以用来创建时间序列对象。
下面是一个简单的例子:```matlabdata = [10, 15, 12, 14, 18]; % 时间序列数据time = datetime(2022, 1, 1:5); % 时间序列对应的时间点ts = timeseries(data, time); % 创建时间序列对象```在创建了时间序列对象后,我们可以使用各种函数和方法来分析和处理时间序列数据。
下面是一些常用的时间序列分析方法和技巧。
我们可以使用`plot`函数来绘制时间序列数据的图形。
这可以帮助我们直观地了解数据的趋势和周期性。
```matlabplot(ts.Time, ts.Data); % 绘制时间序列图形xlabel('时间'); % 设置x轴标签ylabel('数据'); % 设置y轴标签title('时间序列数据'); % 设置标题```除了绘制时间序列图形,我们还可以使用`acf`函数和`pacf`函数来计算时间序列数据的自相关函数和偏自相关函数。
这可以帮助我们判断时间序列数据是否存在相关性,并确定合适的模型。
```matlabacf(ts.Data); % 计算时间序列数据的自相关函数title('自相关函数'); % 设置标题pacf(ts.Data); % 计算时间序列数据的偏自相关函数title('偏自相关函数'); % 设置标题```我们可以使用`arima`函数来拟合时间序列数据的ARIMA模型。
如何使用Matlab进行时间序列分析一、引言时间序列分析是一种广泛应用于经济学、金融学、气象学、医学等领域的分析方法。
在实际应用中,我们经常需要对时间序列数据进行分析、预测和模型建立。
本文将以Matlab为工具,介绍如何使用Matlab进行时间序列分析,帮助读者掌握基本的分析方法和操作步骤。
二、数据准备在进行时间序列分析之前,首先需要准备好相应的数据。
数据可以是从各种渠道获取的实际观测数据,也可以是通过模拟生成的人工数据。
在实际应用中,我们常常需要对长期时间序列进行处理,因此需要考虑数据的数据量和时间范围。
三、数据导入和可视化在Matlab中,数据导入可以通过读取文本文件、Excel文件或者数据库等方式实现。
一旦数据导入成功,我们可以使用Matlab提供的绘图函数将数据进行可视化,以便对数据有一个直观的了解。
常用的绘图函数包括plot、bar、histogram等。
四、平稳性检验在进行时间序列分析之前,我们需要先判断数据是否平稳。
平稳性是时间序列分析的基本假设之一,如果数据不平稳,我们需要进行相应的调整。
在Matlab中,可以使用adftest函数或者kpssTest函数进行平稳性检验,判断数据序列是否平稳。
五、数据预处理在进行时间序列分析之前,有时候需要对数据进行预处理,以消除季节性、趋势性等因素的影响。
常用的预处理方法包括差分、平滑和季节调整等。
在Matlab中,可以使用diff函数对数据进行差分,使用smooth函数进行平滑处理,使用seasonaladjust函数进行季节调整。
六、自相关函数和偏自相关函数的计算自相关函数(ACF)和偏自相关函数(PACF)是分析时间序列的重要工具。
它们可以帮助我们确定时间序列的阶数和选择适当的模型。
在Matlab中,可以使用autocorr函数和parcorr函数分别计算ACF和PACF。
七、模型建立和参数估计在时间序列分析中,我们常常需要通过建立适当的模型来进行预测。
如何使用Matlab技术进行时间序列分析时间序列分析是一种用于统计和预测时间相关数据的方法。
它在各个领域都有广泛的应用,例如经济学、金融学、气象学等。
而Matlab作为一种功能强大的数值计算和数据可视化工具,能够帮助研究人员更加高效地进行时间序列分析。
一、时间序列的基本概念和特征时间序列是一组按时间顺序排列的随机变量值,通常用来描述某个变量在不同时间点上的观测结果。
它具有一些基本特征,比如趋势性、季节性和周期性。
为了更好地理解这些特征,我们可以通过Matlab对时间序列进行可视化分析。
在Matlab中,可以使用plot函数绘制时间序列的折线图。
例如,我们可以生成一个简单的时间序列数据并绘制其折线图。
代码如下:```matlabdata = [1, 3, 2, 4, 5, 7, 6, 8, 9, 10];plot(data)```通过运行上述代码,我们可以看到在Matlab的图形窗口中显示出了一条折线,它连接了数据中相邻观测点的值。
这条折线可以帮助我们观察时间序列的变化趋势。
二、时间序列的平稳性检验在进行时间序列分析之前,我们首先需要判断时间序列数据是否满足平稳性要求。
平稳性是指时间序列在统计特性上不随时间变化的性质。
如果时间序列数据是平稳的,那么我们就可以更加自信地进行后续的分析。
Matlab中有多种方法用于判断时间序列的平稳性。
其中一种常用的方法是ADF检验(Augmented Dickey-Fuller test)。
它的原假设是时间序列具有单位根(非平稳)的特性。
在Matlab中,可以使用adftest函数进行ADF检验。
例如,我们可以使用一个具有趋势的时间序列数据进行平稳性检验。
代码如下:```matlabdata = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];[h, pValue, stat, cValue] = adftest(data);```通过运行上述代码,我们可以得到h值,用来判断时间序列是否为平稳的。
%时间序列ex1%x-72个源数据%各个图像需要单独的操作完成(手工进行)x=[9007 8106 8928 9137 10017 10826 11317 10744 9713 9938 9161 8927 7750 6981 8038 8422 8714 9512 10120 9823 8743 9192 8710 8680 8162 7306 8124 78709387 9556 10093 9620 8285 8433 8160 8034 7717 7461 7776 7925 8634 8945 10078 9179 8037 8488 7874 8647 7792 6957 7726 8106 8890 9299 10625 9302 8314 8850 8265 8796 7836 6892 7791 8129 9115 9434 10484 9827 9110 9070 86339240];T1=zeros(1,72);t=[9651.75 8723.75 8585.8+1/30 8396.75 8576.8+1/30 8796.75]; %t-各年年平均死亡人数for i=1:6T1((12*i-11):(12*i))=t(i); %趋势项T1的赋值end%数据图和分段趋势 1% plot(x);% hold on% plot(T1,'r');% hold off%method1-分段趋势法S1=zeros(1,72);for i=1:12 %季节项S1的赋值S1(i:12:(i+12*5))=sum(x(i+12.*[0:5])-T1(i+12.*[0:5]))/6; endR1=x-T1-S1; %随机项R1及绘图% plot(S1);% hold on% plot(R1,'r');% hold off%method2-回归直线法Y=ones(2,72);Y(2,:)=1:72;A=inv(Y*Y')*Y*x'; %回归系数T2=A(1)+A(2).*[1:72]; %趋势项T2的赋值%数据图和直线趋势 2% plot(x);% hold on% plot(T2,'r');% hold offS2=zeros(1,72);for i=1:12 %季节项S2的赋值S2(i:12:(i+12*5))=sum(x(i+12.*[0:5])-T2(i+12.*[0:5]))/6;endR2=x-T2-S2; %随机项R2及绘图% plot(S2);% hold on% plot(R2,'r');% hold off%forecastfcT=A(1)+A(2).*[73:84]; %趋势项预测fcS=S2(1:12); %季节项预测fcx=fcT+fcS; %死亡人数预测function [a,b,sig2]=arma2_4(r,k)%功能:根据自协方差函数列求ARMA(2,2)模型%输入:r-已知自协方差函数列,k-矩阵的阶数%输出:a-模型的数值项系数;b-噪声项系数;sig2-噪声项的方差%2011-4-17,Designed by luli.atemp=[r(3) r(2);r(4) r(3)]\[r(4);r(5)]; %系数a的计算a=[-1;atemp(1);atemp(2)];ry=zeros(1,3); %变换后的MA(2)模型的自协方差函数列for i=1:3ry(i)=a'*[r(i) r(i+1) r(i+2);r(max(3-i,i-1)) r(i) r(i+1);r(4-i) r(max(3-i,i-1)) r(i)]*a; end%变换后的MA(2)模型的参数求解R=zeros(1,k+1);R(1,1:3)=ry;A=[0 1;0 0];C=[1;0];oma=zeros(2,k);oma(1,1)=ry(2);oma(1,2)=ry(3);oma(2,1)=ry(3);r2=[ry(2);ry(3)];gma=zeros(k,k);for i=1:kfor j=1:kgma(i,j)=R(abs(i-j)+1);endendPI=(oma/gma)*oma';sig2=ry(1)-C'*PI*C;b=(r2-A*PI*C)/sig2;function gammak=arma2_5(L,Max)%功能:计算ARMA(2,2)的自协方差函数列%输入:L-变量的计算下标;Max-计算自协方差的最大次数(默认10000)%输出:gamak-自协方差函数%2011-4-17,Designed by lulia1=0.0894; %初始参数的赋值a2=-0.6265;% b0=1;b1=-0.3334;b2=0.8158;sig2=4.0119;psy=eye(1,Max); %wold系数的初值psy(2)=b1+a1;psy(3)=b2+a2+a1*psy(2);for j=4:Max %wold系数列的计算psy(j)=a1*psy(j-1)+a2*psy(j-2);endgammak=sig2*sum(psy(1:Max-L).*psy(L+1:Max)); %自协方差函数的计算function v=MA2(r1,k)%功能:根据自协方差函数求MA(2)模型%输入:r1-已知自协方差函数序列;k-矩阵的阶数%输出:v-模型的参数组合%2011-4-17,Designed by lulir=zeros(1,k+1); %已知参数赋值r(1,1:3)=r1;A=[0 1;0 0];C=[1;0];oma=zeros(2,k);oma(1,1)=r1(2);oma(1,2)=r1(3);oma(2,1)=r1(3);r2=[r1(2);r1(3)];gma=zeros(k,k);for i=1:k %gma矩阵的赋值for j=1:kgma(i,j)=r(abs(i-j)+1);endendPI=(oma/gma)*oma';sig2=r1(1)-C'*PI*C;b=(r2-A*PI*C)/sig2;v=[k b' sig2]; %输出向量function [H]=AR2Simulink(m,N,M,row,theta)%功能:AR(2)的模拟计算.%输入:m-X序列的延后取值数;N-观测数据数;M-模拟次数;row-参数值1;theta-参数值 2.%输出:H-H的第一行是样本数向量N;H的第二行是估计的样本均值Avemu;H的第三行是估计的噪% 声项均值Avee;H的第四行是估计的样本方差Stdmu;H的第五行是估计的噪声项方差Stde.%2011-5-1,Designed by luli.format short gH=zeros(5,length(N)); %各参数的初始化for j=1:length(N) %不同观测数的循环模拟Avemu=zeros(1,length(N));Avee=zeros(1,length(N));Stdmu=zeros(1,length(N));Stde=zeros(1,length(N));for k=1:M %多次模拟计算Y=zeros(1,m+N(j));terr=zeros(1,m+N(j));mu=zeros(1,M);e=zeros(1,M);for l=3:m+N(j) %序列值的计算terr(l)=randn;Y(l)=2*row*cos(theta)*Y(l-1)-row^2*Y(l-2)+terr(l);end%各参数的赋值X=Y(1,m+1:m+N(j));err=terr(1,m+1:m+N(j));mu(k)=mean(X);e(k)=mean(err);end%输出类型的判断if M==1Avemu(j)=mu; %输出参数的计算Avee(j)=e;Stdmu(j)=0;Stde(j)=0;elseAvemu(j)=sum(mu)/M;Avee(j)=sum(e)/M;Stdmu(j)=sqrt(sum((mu-Avemu(j)).^2)/(M-1));Stde(j)=sqrt(sum((e-Avee(j)).^2)/(M-1));endH(:,j)=[N(j);Avemu(j);Avee(j);Stdmu(j); Stde(j)]; %参数值的输出矩阵赋值Endfunction [H]=Simulink(m,N,M,row,theta)H=zeros(5,length(N));for j=1:length(N)for k=1:MY=zeros(1,m+N(j));terr=zeros(1,m+N(j));X=zeros(1,N(j));err=zeros(1,N(j));for l=3:m+N(j)terr(l)=randn;Y(l)=2*row*cos(theta)*Y(l-1)-row^2*Y(l-2)+terr(l);endX=Y(1,m+1:m+N);err=terr(1,m+1:m+N);mu(k)=mean(X);e(k)=mean(err);endif M==1Avemu=mu;Avee=e;Stdmu=0;Stde=0;elseAvemu=sum(mu)/M;Avee=sum(e)/M;Stdmu=sqrt(sum((mu-Avemu).^2)/(M-1));Stde=sqrt(sum((e-Avee).^2)/(M-1));endH(:,j)=[N(j);Avemu;Avee;Stdmu; Stde];end。
使用Matlab进行时间序列预测时间序列预测是一种针对一系列观测值进行未来数值或趋势的预测的方法。
在各个领域中,时间序列分析与预测被广泛应用于经济学、金融学、气象学、交通运输、生物学等等。
在本文中,我们将详细介绍如何使用Matlab进行时间序列预测,以及应用该预测方法的重要性和一些常见的技巧。
首先,我们需要导入Matlab中的时间序列预测工具箱。
该工具箱提供了一系列用于时间序列分析和预测的函数和算法。
要导入该工具箱,只需在Matlab命令窗口中输入以下命令即可:```matlab% 导入时间序列预测工具箱import econ.*```接下来,我们需要准备好用于预测的时间序列数据。
通常情况下,时间序列数据是按照一定时间间隔收集的观测值的列表。
例如,我们可以使用以下代码创建一个简单的时间序列数据:```matlab% 创建时间序列数据data = [1, 2, 4, 7, 11, 16, 22, 29, 37, 46];ts = timeseries(data);```上述代码将创建一个包含10个观测值的时间序列数据。
接下来,我们可以使用Matlab中的时间序列预测工具进行预测。
以下是一些常见的时间序列预测方法和函数的示例:1. 简单移动平均法(Simple Moving Average,SMA)```matlab% 使用简单移动平均法预测下一个观测值y_pred_sma = predict(sma(ts));```2. 自适应指数平滑法(Exponential Smoothing,ES)```matlab% 使用自适应指数平滑法预测下一个观测值y_pred_es = predict(es(ts));```3. 自回归滑动平均模型(AutoRegressive Moving Average,ARMA)```matlab% 使用ARMA模型预测下一个观测值y_pred_arma = predict(arma(ts));```以上示例只是时间序列预测方法的冰山一角。
如何利用Matlab进行时间序列分析引言:时间序列分析是一种通过观察和分析时间序列数据来预测未来趋势和模式的方法。
Matlab是一种强大的数学计算工具,它提供了许多用于时间序列分析的函数和工具箱,使我们能够更轻松地进行数据分析和预测。
本文将介绍如何使用Matlab进行时间序列分析,并提供一些实用的技巧和方法。
一、数据导入和预处理1. 数据导入:首先,我们需要将时间序列数据导入Matlab中进行处理。
可以使用`readtable`函数将数据从文件中读取到一个Matlab表格中。
该函数支持多种文件格式,如CSV、Excel等。
读取数据后,可以使用`table2array`函数将表格转换为数组进行后续分析。
2. 数据可视化:将数据可视化是进行时间序列分析的重要步骤之一。
可以使用Matlab的绘图函数,如`plot`和`plotyy`,绘制不同的图形,如时间序列曲线、散点图、柱状图等。
通过可视化数据,我们可以更清晰地观察数据的趋势和规律。
3. 数据平滑:时间序列数据常常存在噪声和季节性等问题,为了减少这些干扰,我们可以对数据进行平滑处理。
Matlab提供了一些平滑函数,如`smoothdata`和`smooth`,可以通过设置不同的参数来实现数据平滑。
二、时间序列分析方法1. 自相关函数和偏自相关函数:自相关函数(ACF)和偏自相关函数(PACF)是时间序列分析中常用的工具。
可以使用Matlab中的`autocorr`和`parcorr`函数来计算ACF和PACF,并使用绘图函数将结果可视化。
通过观察ACF和PACF的图形,我们可以判断时间序列是否具有自相关性和偏自相关性,并初步确定合适的时间序列模型。
2. 模型识别和参数估计:在进行时间序列分析时,我们需要选择合适的时间序列模型,并估计其参数。
常用的时间序列模型包括AR模型、MA模型、ARMA模型和ARIMA模型等。
可以使用Matlab中的`ar`、`ma`、`arma`和`arima`函数来拟合相应的模型,并得到参数估计结果。
使用MATLAB进行时间序列分析的基本方法时间序列分析是指通过对时间序列数据的统计分析和建模来揭示数据中存在的模式、趋势和规律。
MATLAB作为一种强大的计算工具,提供了丰富的函数和工具箱,使得时间序列分析更加便捷和高效。
本文将介绍使用MATLAB进行时间序列分析的基本方法与步骤。
一、数据准备与导入在进行时间序列分析之前,首先需要准备数据并将其导入到MATLAB环境中。
常用的数据形式可以是Excel表格、文本文件或者MATLAB数据文件。
在导入数据之前,需要清理和预处理数据,包括缺失值的处理、异常值的剔除以及数据格式的转化等。
二、数据可视化与探索性分析在开始正式的时间序列分析之前,一般会先对数据进行可视化和探索性分析,以对数据的特征和结构有更加直观的了解。
MATLAB提供了丰富的绘图函数和工具,可以通过绘制折线图、散点图、直方图等来展示数据的基本特征和分布情况。
同时,还可以通过自相关图、偏自相关图等来观察数据的自相关性和季节性。
三、时间序列模型的选择与拟合时间序列分析的核心是选择合适的模型来描述和解释数据的变化规律。
常见的时间序列模型包括AR模型、MA模型、ARMA模型和ARIMA模型等。
在MATLAB中,可以利用经典的Box-Jenkins方法来选择合适的模型阶数,并使用相应的函数进行模型参数的拟合和评估。
四、模型的诊断和验证在拟合时间序列模型之后,需要对模型进行诊断和验证,以确保模型的有效性和准确性。
常见的诊断方法包括对残差的自相关性、正态性和白噪声的检验,以及利用残差的预测检验来评估模型的预测性能。
MATLAB提供了丰富的函数和工具,支持对模型的诊断和验证进行全面的分析和评估。
五、模型的预测和应用时间序列分析的重要目的是对未来的数据进行预测和应用。
在模型拟合得到之后,可以利用其对未来一段时间的数据进行预测,并通过绘制预测曲线和计算相应的置信区间来评估预测结果的可靠性。
此外,时间序列模型还可以应用于其他领域,例如金融、经济、气象等,进行相关的预测和决策。
时间序列MATLAB程序
时间序列
移动平均法
clc,clear
y=[533.8 574.6 606.9 649.8 705.1 772.0 816.4 892.7 963.9 1015.1 1102.7];
m=length(y);
n=[4,5];%n为移动平均的项数
for i=1:length(n) %由于n的取值不同,下面使用了细胞数组
for j=1:m-n(i)+1
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'); %读取dianqi.txt的数据,
n=length(yt); %求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
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年预测值写到相应位置。