该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这是我MATLAB预测风速的程序,程序不是我自己写的,我也是拿来参考自己的毕业作业的.每条程序旁的中文是我自己的理解,我也不知道对不对。
程序1
X=load('C:\Users\asus\Desktop\1-3.txt'); 这是我的历史风速写在了桌面的文档里
x=X(1:98);选中我文档中的第一个到第九十八数据
Z=iddata(x);将选中的数据输入模型中
test=[] 这个不是很清楚,是test函数之类的么?
for p=1:9 for循环函数 p和q在1-9里循环选择吧
for q=1:9
m=armax(Z(1:100),[p,q]) 将选好的p和q代入到ARMA模型中
AIC=aic(m);将p和q代入计算AIC函数
test=[test;p q AIC];
end
end
for k=1:size(test,1) 这段不知道k是什么意思,也知道size是什么意思 大致就知道要选择p和q最小值?
if test(k,3) == min(test(:,3))
p_test=test(k,1)
q_test=test(k,2)
end
end
而程序一我输入到malab中能的出p和q的值 但是也会有警告: Data sample indices extend beyond the available data range. Only the samples in the
available range will be returned. 数据样本索引超出了可用数据范围。只返回可用范围内的样品。
> In ctrlMsgUtils.warning (line 25)
In iddata/subsref>indexref (line 174)
In iddata/subsref (line 47) 不理解为什么超出可用范围。。。
程序二
clc
clear
q_test = 3;p和q的最小值
p_test = 3;
X=load('C:\Users\asus\Desktop\1-3.txt');
X5=X(94:98); 预测第94个到第98个数据
X=X(1:93);前面93个数据
plot(1:length(X),X);将93个数据出图
Y = diff(X);重点。这个是差分函数的意思么???因为后续我的老师告诉我差分函数的结果原数据不会和差分后的数据有很大的差别,但事实出来的图有很大差别。。。
figure(2)
plot(1:length(Y),Y)
Z=iddata(Y);而这里之后也不是恨了解了,但看上去就像一直在转换一样的,姑且认为是为预测做转化准备。
m=armax(Z,[p_test q_test]);
L=5;
y=[Y;zeros(L,1)];
p = iddata(y);
P = predict(m,p,L);
G = get(P);
PT = G.OutputData{1,1}(length(Y)+1:length(Y)+L,1);
D = [Y;PT];
X1 = cumsum([X(1);D]);
X2 = X1(length(X)+1:end);
compare(m,Z,L)
figure(3)
plot(1:5,X2,'b',1:5,X5,'r')
title('蓝色为预测风速,红色为实际风速')
对于这个程序,自己还有很多不了解的,所以想发出来交流交流,也请指点指点小弟。