arma预测matlab讲解,MATLAB中ARMA模型预测差分问题
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
這是我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('藍色為預測風速,紅色為實際風速')
對于這個程序,自己還有很多不了解的,所以想發出來交流交流,也請指點指點小弟。
總結
以上是生活随笔為你收集整理的arma预测matlab讲解,MATLAB中ARMA模型预测差分问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++中的类对象的内存分布以及虚函数表内
- 下一篇: 父组件给子组件传值方法_【Vue】小学生