韩京清老师所写的《自抗扰控制技术》中,介绍了跟踪微分器的设计过程,下面就把数学原理和代码来详细记录跟踪微分器的设计过程。
跟踪微分器的作用就是从被噪声污染的信号中合理的提取微分信号。
(1)一般的跟踪微分器
传统的微分信号是用如下的微分环节来得到的:
所得到的结果如下图:
下面是代码的实现过程,对正弦信号求微分:
clear all;
h=0.001;
T=0.001;
time = 20;
N = time/T;
n=0:N-1;
x = sin(n*T);
for k=1:1:N
xDelay(1)=0;
y(k) = (x(k)-xDelay(k))/T;
xDelay(k+1) = xDelay(k) + h*(x(k)-xDelay(k))/T;
end
plot(n*T,x,n*T,y);
得到的结果如下:
其所对应的仿真图如下所示。
下面是代码:
clear all;
h=0.001;
T=0.001;
tau1=0.01;
tau2=0.02;
time = 20;
N = time/T;
n=0:N-1;
x = sin(n*T);
for k=1:1:N
x1(1) = 0;
x2(1) = 0;
x1(k+1) = x1(k)+h*x2(k);
x2(k+1) = x2(k)-h*((x1(k)-x(k))/tau1/tau2+(tau1+tau2)*x2(k)/tau1/tau2);
y(k) = x2(k);
end
plot(n*T,x,n*T,y);
实现的结果如下图:
如果对这两个微分器分别加上噪声的话,再来比较谁的微分效果更好,代码如下:
clear all;
h=0.001;
T=0.001;
tau1=0.01;
tau2=0.02;
time = 20;
N = time/T;
n=0:N-1;
x = sin(n*T);
noise=-1+2*rand(1,N);% add noise[-1,1]
x = x+0.01*noise;% gain is 0.01
for k=1:1:N
x1(1) = 0;
x2(1) = 0;
x1(k+1) = x1(k)+h*x2(k);
x2(k+1) = x2(k)-h*((x1(k)-x(k))/tau1/tau2+(tau1+tau2)*x2(k)/tau1/tau2);
y(k) = x2(k);
end
plot(n*T,x,n*T,y);
仿真图如下:
而传统的微分器的效果如下:
两者的对比已经非常明显了。(我也不清楚怎么差别这么大,是噪声幅度太大了吗)
评论(0)
您还未登录,请登录后发表或查看评论