• 大小: 851B
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-05-09
  • 语言: Matlab
  • 标签: ar  

资源简介

在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  Untitled.m

----------- ---------  ---------- -----  ----

                 1817                    1


评论

共有 条评论