系统建模与仿真之一种敷衍的阶跃响应面积法求传递函数

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

题目

给定函数模型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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值