• 大小: 823B
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: 其他
  • 标签: 系统辨识  matlab  

资源简介

本程序是仿真了一个卡尔曼滤波进行系统辨识的实验,把卡尔曼的递推过程写的很清晰,便于大家更好的理解卡尔曼滤波

资源截图

代码片段和文件信息

clear all;clc;close all;
N = 10000;
h = [0.04-0.050.07-0.21-0.50.720.3600.210.030.07];
x = normrnd(011N);
d = conv(xh);
N1 = 25;
F = eye(N1);
K = eye(N1);
P = eye(N1);
W = zeros(N1N);
a = zeros(1N);
y = zeros(1N);
Q2 = 1e-4;

for n = N1:N
    xn = x(n:-1:n-N1+1).‘;
    a(n) = d(n) - xn.‘*W(:n-1);
    Gn = K*conj(xn)/(xn.‘*K*conj(xn)+Q2);
    W(:n) = W(:n-1) + Gn*a(n);
    P = K - Gn*xn.‘*K;
    K = P;
end
MSE = a;
J = a.*a;
for i = 1:length(a)
    MSE(i) = mean(a(1:i));
end
figure(1);
subplot(221);
stem(h);    title(‘未知的系统响应‘);
subplot(222);
stem(W(:N));     title(‘自适应滤波器‘)
subplot(223);
h(length(h)+1:length(W(:N))) = 0;
stem(h-W(:N).‘);    title(‘h-W‘);
subplot(224);
plot(10*log10(abs(J(1:2000))));   title(‘学习曲线‘);

X0 = [x zeros(125)];
for n = 2:N
    xn = X0(n+N1-1:-1:n).‘;
    a(n) = d(n) - xn.‘*W(:n-1);
    Gn = K*conj(xn)/(xn.‘*K*conj(xn)+Q2);
    W(:n) = W(:n-1) + Gn*a(n);
    P = K - Gn*xn.‘*K;
    K = P;
end
MSE = a;
J = a.*a;
for i = 1:length(a)
    MSE(i) = mean(a(1:i));
end
figure(2);
subplot(221);
stem(h);    title(‘未知的系统响应‘);
subplot(222);
stem(W(:N));     title(‘自适应滤波器‘)
subplot(223);
h(length(h)+1:length(W(:N))) = 0;
stem(h-W(:N).‘);    title(‘h-W‘);
subplot(224);
plot(10*log10(abs(J(1:2000))));   title(‘学习曲线‘);

% Q2 = exp(-(1:0.2:10));
% for i = 1:length(Q2)
%     F = eye(N1);
%     K = eye(N1);
%     P = eye(N1);
%     W = zeros(N1N);
%     a = zeros(1N);
%     y = zeros(1N);
%     for n = N1:N
%         xn = x(n:-1:n-N1+1).‘;
%         a(n) = d(n) - xn.‘*W(:n-1);
%         Gn = K*conj(xn)/(xn.‘*K*conj(xn)+Q2(i));
%         W(:n) = W(:n-1) + Gn*a(n);
%         P = K - Gn*xn.‘*K;
%         K = P;
%     end
%     WW(i:) = W(:N).‘;
%     ee(i:) = a;
% end
% MSE = ee;
% for j = 1:length(Q2)
%     for i = 1:length(MSE(j:))
%         MSE(ji) = mean(ee(j1:i));
%     end
% end
% for n = 1:length(Q2)
%     figure(3); 
%     subplot(221);
%     stem(h);    title(‘未知的系统响应‘);
%     subplot(222);
%     stem(WW(n:));     title(‘自适应滤波器‘)
%     h(length(h)+1:length(W(:N))) = 0;
%     subplot(223);
%     stem(h-WW(n:));    title(‘h-W‘);
%     subplot(224);
%     plot(20*log10(abs(MSE(n:))));   title(‘遗忘因子对学习曲线的影响‘);
%  
% end

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2394  2019-01-16 20:07  kalman_xitongbianshi.m

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

                 2394                    1


评论

共有 条评论