資源簡介
在matlab中實現對時間序列的ar模型建立以及卡爾曼濾波

代碼片段和文件信息
subplot(111);
global?fs;
fs?=?1000;??
t?=?0:1/fs:15;
N?=?size(t2)??????????????????????%數據樣值點數
randn(‘state‘0);
x?=?sin(2*pi*t*23)+randn(1N);??%?200Hz?cosine?plus?noise
global?Signal;
Signal=x;
%title(‘數字信號‘);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N=length(x);
n=1:length(x);
[ba]=stmcb(x33)
estx=filter([0-b][0-a(2:end)]x)
subplot(411);
plot(nx‘b‘);
axis([1?N?floor(min(x))?ceil(max(x))]);%floor向下取整,ceil向上取整
title(‘ARMA模型預測‘);
xlabel(‘藍色為真實值‘);
subplot(412);
plot(nestx‘r‘);
axis([1?N?floor(min(x))?ceil(max(x))]);%floor向下取整,ceil向上取整
xlabel(‘紅色為預測值‘);
subplot(413);
plot(nestx‘r‘nx‘-.‘);?%s是修正后的預測值(紅色),x是真實值(藍色)
axis([1?N?floor(min(x))?ceil(max(x))]);%floor向下取整,ceil向上取整
xlabel(‘ARMA整合圖:藍色為真實值,紅色為預測值‘);
%%%%%%%%%%%%%%%%%%%%%%
y=estx
N=length(y);
n=1:length(y);
a=1;?
w=randn(1N);
V=zeros(1N);?%這里取真實值和觀測值相同,即誤差V在各點均為0
q1=std(V);?
Rvv=q1.^2;?
q2=std(estx);?
Ryy=q2.^2;?
q3=std(w);?
Rww=q3.^2;?
c=1;?
Y=c*y+V;?
p(1)=0;?
s(1)=0;?
for?t=2:N;?
p1(t)=a.^2*p(t-1)+Rww;?
b(t)=c*p1(t)/(c.^2*p1(t)+Rvv);?
s(t)=a*s(t-1)+b(t)*(Y(t)-a*c*s(t-1));?
p(t)=p1(t)-c*b(t)*p1(t);?
end?
t=1:N;?
%figure(3);
%subplot(311);
%plot(ty‘b‘);
axis([1?N?floor(min(y))?ceil(max(y))]);%floor向下取整,ceil向上取整
%title(‘卡爾曼濾波‘);
%xlabel(‘藍色為真實值‘);
%subplot(312);
%plot(ts‘r‘);
axis([1?N?floor(min(x))?ceil(max(x))]);%floor向下取整,ceil向上取整
%xlabel(‘紅色為預測值‘);
subplot(414);
plot(ts‘r‘ty‘-.‘);?%s是修正后的預測值(紅色),x是真實值(藍色)
axis([1?N?floor(min(y))?ceil(max(y))]);%floor向下取整,ceil向上取整
xlabel(‘卡爾曼整合圖:藍色為真實值,紅色為預測值‘);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1817??2014-05-07?21:58??Unti
-----------?---------??----------?-----??----
?????????????????1817????????????????????1
- 上一篇:NSGA2-matlaB
- 下一篇:基于基于遺傳算法matlab優化程序
評論
共有 條評論