⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m12_3.m

📁 《MATLAB控制系统仿真与实例详解》一书的光盘源码。图书简介:本书详细地讲解了MATLAB 7.x的功能与相关操作以及MATLAB在控制系统中的仿真应用。本书内容包括控制系统仿真基础、MATLAB程
💻 M
字号:
%LSeg3
clear
L=60;%四位移位积存器产生的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
v=randn(1,60); %产生一组60个正态分布的随机噪声
R=corrcoef(u,v);%计算输入信号与随机噪声信号的相关系数
r=R(1,2);%取出互相关系数
u%显示输入型号
v%显示噪声型号
z=zeros(7,60);zs=zeros(7,60);zm=zeros(7,60);zmd=zeros(7,60);%输出采样、不考虑噪声时系统输出、不考虑噪声时模型输出、模型输出矩阵的大小
z(2)=0;z(1)=0;zs(2)=0;zs(1)=0;zm(2)=0;zm(1)=0;zmd(2)=0;zmd(1)=0;%给输出采样、不考虑噪声时系统输出、不考虑噪声时模型输出、模型输出赋初值
%增广递推最小二乘辨识
c0=[0.001 0.001 0.001 0.001 0.001 0.001 0.001]';%直接给出被辨识参数的初始值,即一个充分小的实向量
p0=10^6*eye(7,7);%直接给出初始状态P0,即一个充分大的实数单位矩阵
E=5.0e-15;%取相对误差E
c=[c0,zeros(7,59)];%被辨识参数矩阵的初始值及大小
e=zeros(7,60);%相对误差的初始值及大小

for k=3:60; %开始求K 
    z(k)=1.5*z(k-1)-0.7*z(k-2)+u(k-1)+0.5*u(k-2)+v(k)-v(k-1)+0.2*v(k-2);%系统在M序列输入下的输出采样信号    
    h1=[-z(k-1),-z(k-2),u(k-1),u(k-2),v(k),v(k-1),v(k-2)]';%为求K(k)作准备
    x=h1'*p0*h1+1; x1=inv(x); k1=p0*h1*x1; %K
    d1=z(k)-h1'*c0; c1=c0+k1*d1;%辨识参数c 
    zs(k)=1.5*z(k-1)-0.7*z(k-2)+u(k-1)+0.5*u(k-2);%系统在M序列的输入下不考虑扰动时的输出响应
    zm(k)=[-z(k-1),-z(k-2),u(k-1),u(k-2)]*[c1(1);c1(2);c1(3);c1(4)];%模型在M序列的输入下不考虑扰动时的的输出响应
    zmd(k)=h1'*c1;%模型在M序列的输入下的的输出响应
    e1=c1-c0; 
    e2=e1./c0; %求参数的相对变化
    e(:,k)=e2;
    c0=c1;%给下一次用
    c(:,k)=c1;%把辨识参数c 列向量加入辨识参数矩阵 
    p1=p0-k1*k1'*[h1'*p0*h1+1];%find p(k)
    p0=p1;%给下次用
    if e2<=E break;%若收敛情况满足要求,终止计算
    end%判断结束
end%循环结束
c, e, %显示被辨识参数及参数收敛情况
z,zs ,zmd %显示输出采样值、系统实际输出值、模型输出值

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -