题目
给定函数模型G(s)=1/(6*s^3+12*s^2+3*s+1),用step函数产生阶跃响应,在阶跃响应上加上高斯白噪声,以后利用面积法编程辨识模型的传递函数参数。
代码
clc;
clear;
close all;
%我采用的是直接计算c1、c2、c3的方法,因为仿真式中分子为1,只计算分母系数即可。
%如果a和b都计算因为采用的积分函数原因不知道为什么误差很大。
%仿真时间设置
delta_t=0.001;
time=0:delta_t:61;
varience=input('输入方差:');%方差输入
A=43;x0=41;M=2^18;Num=length(time);N=Num*30;%产生噪声
v=zeros(1,N);
for k = 1:N
x2 = A*x0;
x1 = mod(x2,M);
v1 = x1/M;
v(k) = v1;
x0 = x1;
v0 = v1;
end
B=reshape(v,Num,30);
noise=zeros(1,Num);
for i=1:Num-1
noise(i)=(sqrt(varience)*(sum(B(i,:))-30/2))/(sqrt(30/12));
end
noise=[0 noise(1:1:Num-1)];
%理论
num=1;
den=[6 12 3 1];
G=tf(num,den);
Y = step(G, time);
Y_noise=Y+noise';
figure(1);
plot(time,Y_noise);
hold on
plot(time,Y,'LineWidth',2);
legend(["响应+噪声","原始响应曲线"]);
xlim([0 50]);
hold off
%积分算C1
inter1=cumsum(delta_t*(1-Y_noise));
c1=inter1(length(time));
den1=[c1 1];
G1=tf(num,den1);
Y1 = step(G1, time);
%积分算C2
inter2=cumsum(delta_t*(Y1-Y_noi

博客围绕给定函数模型G(s)=1/(6*s^3+12*s^2+3*s+1)展开,使用step函数产生阶跃响应,在响应上添加高斯白噪声,然后利用面积法编程来辨识模型的传递函数参数,还包含相关代码和图像。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



