资源简介
递推极大似然参数辨识法MATLAB程序
clear all%清理工作间变量
close all%关闭所有图形
clc%清屏
%%%% M序列、噪声信号产生%%%%
L=1200;%四位移位积存器产生的M序列的周期
y1=1;y2=1;y3=1;y4=0;%四个移位积存器的输出初始值
for i=1:L;
x1=xor(y3,y4);%第一个移位积存器的输入信号
x2=y1;%第二个移位积存器的输入信号
x3=y2;%第三个移位积存器的输入信号
x4=y3;%第四个移位积存器的输入信号
y(i)=y4;%第四个移位积存器的输出信号,幅值"0"和"1"
if y(i)>0.5,u(i)=-1;%M序列的值为"1"时,辨识的输入信号取“-1”
else u(i)=1;%M序列的值为"0"时,辨识的输入信号取“1”
end
y1=x1;y2=x2;y3=x3;y4=x4;%为下一次的输入信号作准备
end
------
代码片段和文件信息
clear all%清理工作间变量
close all%关闭所有图形
clc%清屏
%%%% M序列、噪声信号产生%%%%
L=1200;%四位移位积存器产生的M序列的周期
y1=1;y2=1;y3=1;y4=0;%四个移位积存器的输出初始值
for i=1:L;
x1=xor(y3y4);%第一个移位积存器的输入信号
x2=y1;%第二个移位积存器的输入信号
x3=y2;%第三个移位积存器的输入信号
x4=y3;%第四个移位积存器的输入信号
y(i)=y4;%第四个移位积存器的输出信号,幅值“0“和“1“
if y(i)>0.5u(i)=-1;%M序列的值为“1“时辨识的输入信号取“-1”
else u(i)=1;%M序列的值为“0“时辨识的输入信号取“1”
end
y1=x1;y2=x2;y3=x3;y4=x4;%为下一次的输入信号作准备
end
v=randn(11200); %产生一组1200个正态分布的随机噪声
V=0; %计算噪声方差
for i=1:1200
V=V+v(i)*v(i);
end
V1=V/1200 %计算噪声方差结束
%%%% M序列、噪声信号产生结束 %%%
%%%递推极大似然算法开始%%%
z(2)=0;z(1)=0;
for k=3:1200 %根据v和u计算z(k)
z(k)=-0.5*z(k-1)+0.2*z(k-2)+1.2*u(k-1)+0.3*u(k-2)+1.0*v(k)-1.0*v(k-1)+0.8*v(k-2);
end
theta1=0.001*ones(61);p0=eye(66);
zf(1)=0;zf(2)=0;vf(1)=0;vf(2)=0;uf(1)=0;uf(2)=0;
for k=3:1200 %递推迭代计算
h=[-z(k-1);-z(k-2);u(k-1);u(k-2);v(k-1);v(k-2)];
hf=h;
K=p0*hf*inv(hf‘*p0*hf+1);
p=[eye(66)-K*hf‘]*p0;
v(k)=z(k)-h‘*th
- 上一篇:基于混沌算法的图像加密解密
- 下一篇:血管检测程序手掌,手背
评论
共有 条评论