产生数据程序.m

来自「系统辨识与参数估计源代码。可以对一个未知模型做出估计。」· M 代码 · 共 52 行

M
52
字号
function identify
clear
L=3003; % M 序列的周期 
z1=1;z2=1;z3=1;z4=0;  %4个移位寄存器的输出初始值
for i=1:L;%开始循环,L为循环长度
    x1=xor(z3,z4); 
    x2=z1;
    x3=z2;
    x4=z3;
    z(i)=z4; %输出值为“0”,“1”,即M序列
    if z(i)>0.5,u(i)=-1;
    else u(i)=1;  
    end  %产生了幅值为±1的伪随机二位式信号(PRBS)序列
    z1=x1;z2=x2;z3=x3;z4=x4; %为下一次的输入信号作准备
end %产生了输入信号u
figure(1); %作第一个图形 (可删除)
stem(u),grid on %(可删除)
fid1=fopen('c:\MATLAB\work\wkk01.data','w');  %输出第一组数据 
v=randn(1,3003); %产生一组3000个的正态分布的随机噪声
y(3)=0;y(2)=0; y(1)=0; %设置y的两个初始值为零
for k=4:3003;
    y(k)=1.5*y(k-1)-0.7*y(k-2)+u(k-2)+0.5*u(k-3)+v(k)+0.9*v(k-1)+0.7*v(k-2) ;  %输出采样信号(加白噪声)
    D=[k-3,u(k),v(k),y(k)];
    fprintf(fid1,'%i\t  %2.4f\t  %2.4f\t  %2.4f\t\n',D);
end
fclose(fid1);

L=3003; % M 序列的周期 
z1=1;z2=1;z3=1;z4=0;  %4个移位寄存器的输出初始值
for i=1:L;%开始循环,L为循环长度
    x1=xor(z3,z4); 
    x2=z1;
    x3=z2;
    x4=z3;
    z(i)=z4; %输出值为“0”,“1”,即M序列
    if z(i)>0.5,u(i)=-1;
    else u(i)=1;  
    end  %产生了幅值为±1的伪随机二位式信号(PRBS)序列
    z1=x1;z2=x2;z3=x3;z4=x4; %为下一次的输入信号作准备
end %产生了输入信号u
figure(1); %作第一个图形 (可删除)
stem(u),grid on %(可删除)
fid2=fopen('c:\MATLAB\work\wkk02.data','w'); %输出第2组数据
v=randn(1,3003); %产生一组3000个的正态分布的随机噪声
y(3)=0;y(2)=0; y(1)=0; %设置y的两个初始值为零
for k=4:3003;
    y(k)=1.5*y(k-1)-0.7*y(k-2)+u(k-2)+0.5*u(k-3)+v(k)+0.9*v(k-1)+0.7*v(k-2) ;  %输出采样信号(加白噪声)
    D=[k-3,u(k),v(k),y(k)];
 
   fprintf(fid2,'%i\t  %2.4f\t  %2.4f\t  %2.4f\t\n',D);
end
fclose(fid2);

⌨️ 快捷键说明

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