|
为了证明这方法的正确性,以下有一个证明的程序,对于任意一个二阶系统假设了它的参数a和b。
a=[1 1 0.25]; %假设系统参数a和b
b=[1];
t=0:15;
N=length(t);
fs=200; %假设采样频率,仅为计算系统激冲响应用
[x1,t1]=impz(b,a,t,fs); %计算系统激冲响应
p=2;
[ma,ar] = prony (x1, p, p); %从系统激冲响应计算系统参数
x=ones(1,length(t)); %设置阶跃函数
y=filter(b,a,x); %计算系统阶跃响应
plot(t1,x1,'r','linewidth',2); hold on;
plot(t1,y,'g');
title('离散系统阶跃响应')
xlabel('t');
ylabel('Am(k)');
y=[0 y]; %从系统阶跃响应求系统激冲响应
for k=1 : N
y1(k)=y(k+1)-y(k);
end
%把系统激冲响应、阶跃响应和计算得的激冲响应曲线图
plot(t1,y1,'b'); hold off; grid;
legend('激冲响应','阶跃响应','计算得激冲响应');
[ma1,ar1] = prony (y1, p, p);
fprintf('激冲响应\n');
fprintf('ma=%5.6f %5.6f %5.6f\n',ma);
fprintf('ma=%5.6f %5.6f %5.6f\n',ar);
fprintf('计算得激冲响应\n');
fprintf('ma=%5.6f %5.6f %5.6f\n',ma1);
fprintf('ma=%5.6f %5.6f %5.6f\n',ar1);
从试验来看,这方法不限于二阶系统,可适用于高阶系统。 |
评分
-
1
查看全部评分
-
|