产生数据程序.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 + -
显示快捷键?