- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验2 脉冲响应法
实验报告
哈尔滨工业大学
航天学院控制科学与工程系
专业: 自动化
班级: 1104102
姓名: 张树龙
日期: 2014 年 10 月 22日
1.实验题目: 脉冲响应法 ______
2.实验目的
通过仿真实验掌握利用相关分析法辨识脉冲响应的原理和方法。
3.实验主要原理
一个单入单出线性定常系统的动态特性可用它的脉冲响应函数g(σ)来描述。
这样,只要记录x(t)、y(t)的值,并计算它们的互相关函数,即可求得脉冲响应函数g(τ)。
而在系统有正常输入的情形下,辨识脉冲响应的原理图如下图所示。
4.实验对象或参数
实验对象:Matlab
实验参数:
,r和sigma由用户输入
5.程序框图
6.程序代码
function ex2
%创建M序列
Np=63;%循环周期
delta_T = 1;%时钟节拍
a=1;%幅度
%初始化M序列
M(1)=1;
M(2)=0;
M(3)=0;
M(4)=1;
M(5)=1;
M(6)=0;
M_XuLie(Np) = 0;
for n = 1 : Np
temp = xor(M(6), M(5));
if(temp == 0)
M_XuLie(n) = a;
else
M_XuLie(n) = -a;
end
M(6) = M(5);
M(5) = M(4);
M(4) = M(3);
M(3) = M(2);
M(2) = M(1);
M(1) = temp;
end
%stairs(M_XuLie)
%生成M序列完毕
r = 3; % 周期数
u=repmat(M_XuLie,1,r+1);%将M序列赋给输入,作为输入信号
%第一步,从u(k)得到x(k),y(k)
K = 120;
T0 = 1; % 采样时间
T1 = 8.3;
T2 = 6.2;
K1=K/(T1*T2);
%初始化X(k),Y(k)为0
K2=1
x(63)=0;
y(63)=0
for k = 2 : 63*4
%取得x(k)序列
x(k)=exp(-T0/T1)*x(k-1)+T1*K1*(1-exp(-T0/T1))*u(k-1)+T1*K1...
*(T1*(exp(-T0/T1)-1)+T0)*(u(k)-u(k-1))/T0
%取得y(k)序列
y(k)=exp(-T0/T2)*y(k-1)+T2*K2*(1-exp(-T0/T2))*x(k-1)+T2*K2...
*(T2*(exp(-T0/T2)-1)+T0)*(x(k)-x(k-1))/T0
end
%获取没有白噪声时候输出完毕
%作图
figure(1);
plot(u,r);
hold on;
plot(x,k);
plot(y,b);
legend(u(k),x(k),y(k));
%第二步,将白噪声添加入输出信号
%产生白噪声信号v
fangcha = 0.5;%随意指定的方差
v = fangcha * randn(1,63*4);
%信号叠加,输出实际信号z(k)
z = y + v;
%figure(2);
%plot(v,m);
%hold on;
%plot(z,y);
figure(2);
%打印无白噪声污染信号
plot(y,b);
hold on;
%打印白噪声信号
plot(v,m);
%打印白噪声污染后的信号
plot(z,k);
legend(y(k),v(k),z(k));
%计算Rmz(k)
for k = 1 : Np
Rmz(k)=0;%初始化为0
for i = (Np + 1) : ((r+1)*Np)
Rmz(k)=Rmz(k) + u(i-k)*z(i);
end
Rmz(k)=Rmz(k)/(r*Np);
end
%计算c
c=-Rmz(Np - 1);
%计算脉冲响应估计值g1
g1=Np*(Rmz+c)/((Np+1)*a^2*delta_T);
%计算理论脉冲g0
for k = 1: Np
g0(k)=K/(T1-T2)*(exp(-k*delta_T/T1)-exp(-k*delta_T/T2));
end
%计算脉冲响应估计误差delta_g
delta_g=sqrt(sum((g0-g1).^2)/sum(g0.^2));
figure(3);
plot(g0,k);
hold on;
plo
文档评论(0)