数字微分器

更新时间:2024-07-03 08:28

数字微分器,是指执行微分运算的数字方式。整数阶数字微分器用于确定和估计给定信号的(一般是关于时间)导数是十分有用的工具。微分运算是许多物理系统和计算系统中常用的基本手段,数字微分器在测试技术、控制工程及生物工程中得到了广泛的应用。

基本概念

微分运算是一种基本的数学运算,在信号分析与处理等领域得到广泛应用,特别在信号的奇异性检测和提取方面具有特殊的作用。我们常用的微分运算,微分方程等使用的都是整数阶,例如一阶导数、二阶导数⋯,一阶微分方程、二阶微分方程⋯,然而许多事物、自然现象以及社会现象,例如诸多“非”问题和现象是难以用整数阶微分方程来描述和刻画的。从信号分析与处理角度来看,微分运算,即对函数或信号f(t)求导:

数字微分器,是指执行微分运算的数字方式。整数阶数字微分器用于确定和估计给定信号的(一般是关于时间)导数是十分有用的工具。例如,在雷达和声纳应用中,速度和加速度是用微分器从位置测量数据计算出来的。在生物医学工程中,通常需要获得生物医学数据中,特别是在低频区间的高阶导数。对于整数阶,也即普通微分滤波器的设计理论己很成熟并得到广泛应用。

理想数字微分器设计

定义

从信号处理角度来看,整数阶或分数阶(阶数为v)微积分运算完全可以看成是对信号的滤波,滤波函数即是

有如下三种情况:

(1)v>0,对应于微分函数

是奇异高通滤波;

(2)v=0,对应于全通函数

(3)v<0,对应于积分函数

是奇异低通滤波。

根据数字信号处理理论,我们将理想的数字分数阶微分滤波函数定义为:

性质

这样得到的理想数字分数微分滤波器,满足如下基本性质:

(1)有界性

(2)波动性

(3)实值性

(4)连续性

(5)能量有限性

一阶微分器

微分运算是许多物理系统和计算系统中常用的基本手段,微分器在测试技术、控制工程及生物工程中得到了广泛的应用。但是对连续信号或离散信号求导数,通常是一个不稳定的过程。

下面介绍一种直接从被测信号中得到低阶,又能抑制噪声的微分器。模拟电路为:

可以得到积分方程为:

经拉氏变换得:

下图是框图:

波特图为:

这是包含了一阶低通滤波器的微分器。

数字微分器的Matlab实现

测试数据进行微分和积分计算是经常遇到的问题,对于有解析表达式的函数,求其微分往往比积分容易得多。但对由测量系统测得的数据进行微分和积分情况就不一样了,为满足一定的工程计算精度,进行微分计算常比积分困难得多。常用的微分方法有两种:用模拟微分器进行实时微分获取,用软件设计数字微分器对已测得的数据进行微分处理。

Matlab语言是一种面向科学与工程计算的语言,高版本的Matlab语言有丰富的库函数,用户文件也可作为Matlab的库函数直接调用。用户可以根据自己的需要方便地建立和扩充新的库函数。充分利用Matlab语言的函数功能,可以完成数字微分器的程序设计,并将其作为函数文件保存,可方便地进行调用。

原始数据的获取

测试数据为某一运动物体的速度,感应测速传感器的工作原理是:当物体运动时,带动与其固联的永久磁铁沿速度线圈轴线方向运动,通过电磁感应原理把物体的运动速度变换成和它保持一定比例关系的感应电动势。测量放大器的功能是放大传感器的输出信号,并改善整个测量系统的动态响应.速度信号含有丰富的高频成分,采用模拟微分器需要严格调节微分器的时间常数等,微分的效果不理想,因此设计数字微分器对速度信号进行微分处理以获得其加速度信号。系统框图如下:

数字微分器设计

设计数字微分器的理论依据是模拟微分器的频率响应函数.模拟微分器的频率响应函数为:

其冲击响应函数为:

计算实例

Matlab程序如下:

function a=dif(v,Ts,ft,N,M0,N1)/可供调用的微分子函数/

kd=2*ft*Ts;

h(M0+1)=0;

pai=3.14;

for i=0:M0-1

B=pai*kd*(i-M0);

h1=1-cos(pai*i/M0);

h2=B*cos(B)-sin(B);

h(i+1)=h2/(2*pai*Ts)*h1/(i-M0)^2;

end;

for i=M0+1:2*M0-1

B=pai*kd*(i-M0);

h1=1-cos(pai*i/M0);

h2=B*cos(B)-sin(B);

h(i+1)=h2/(2*pai*Ts)*h1/(i-M0)^2;

end;/计算数字微分器的冲击响应/

V=fft(v,N);

H=fft(h,N);

Z=V*H;

z=ifft(Z);

a=real(z);/利用Matlab的函数做两次FFT和一次IF󰀁FT/

for i=0:N1-1

a(i+1)=a(i+1+M0);

end;

for

i=N1:N1-1+2*M0-1

a(i+1)=0;

end;/将序列向右平移M0/

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}