MATLAB结合PSPICE在模拟电路
故障特征提取中的应用
摘要 在模拟电路故障诊断中故障特征提取是至关重要的一步,直接影响着系统的诊断能力。本文阐述了MATLAB与PSpice在模拟电路故障特征提取中的应用,着重介绍了MATLAB如何调用PSpice仿真数据,并给出了基于多分辨分析和小波包变换的模拟电路故障特征提取的具体实现方法。
关键字 MATLAB PSpice 故障特征提取 多分辨分析 小波包变换 随着科学技术和电子工业的迅速发展,电子设备的规模越来越大,复杂度也在不断提高,系统的维护、修理和调试变得越来越困难,为了提高系统的安全性和可靠性,故障诊断技术逐渐受到人们的重视。近年来神经网络理论发展迅速,基于神经网络的模拟电路故障诊断方法也有很大的发展。为了把神经网络成功的应用于模拟电路的故障诊断中,构造样本集是第一步,也是至关重要的一步,它包括故障模式的划分、原始数据的收集、故障特征的提取等。其中,故障特征的提取是最为重要的环节,通过对原始数据的处理得到最能表征其故障模式的数据信息,它直接影响着训练后神经网络的诊断能力,是模拟电路故障诊断的关键。本文将介绍如何利用MATLAB和PSpice进行电路故障特征提取的过程和方法。 1 软件介绍
MATLAB是美国Math Works公司开发的计算机仿真软件,涵盖通信、航天、力学、力、自动控制、神经网络等领域,具有强大的数据
处理能力,已经成为集数值运算、符号运算、数据可视化、图形界面设计、程序设计、仿真的多种功能于一体的集成软件。
PSpice是美国加州大学伯克利分校开发的通用电路模拟仿真程序SPICE(Simulation Program with IC Em2 phasis) 移植于PC 机上的版本. PSpice 能够对模拟电路、数字电路、数模混合电路以及电力电子电路电路进行仿真,可获得电路中各节点和支路的响应特性,这些响应特性可以文本形式输出,也可以各种波形及曲线输出。因此,在计算机辅助分析与设计和电子教学中广泛应用。 2 PSpice中模拟电路仿真
PSpice的输入有电路原理图和网单文件两种形式,我选用的是输入网单文件的方式。电路仿真程序是PSpice的核心,它的仿真功能有直流工作点分析、直流转移特性分析、直流灵敏度分析、交流小信号分析、瞬时分析、最坏情况分析和蒙特卡洛分析等。仿真输出文件有绘图文件(*.dat)和数据输出文件(*.out)。我们需要的是数据输出文件,然后用MATLAB处理模拟电路仿真数据,得到模拟电路的故障特征向量。
3 MATLAB读取电路仿真数据的方法
电路的仿真数据是通过.PRINT命令和蒙特卡洛分析结合得到,数据储存在PSpice运行结果的.OUT输出文件中。在用MATLAB读取仿真数据数据之前,首先要对.OUT数据输出文件进行处理,即删除输出文件中的文件头尾对电路的描述统计信息和每次进行蒙特卡洛分析的描述信息等,而只保留蒙特卡洛分析得到的数据,将经过处
理后的输出文件存盘,用于MATLAB的读取。 3.1 常用的文件读取函数
1)fopen( )函数 调用格式:fid=fopen(filename),以只读方式打开名为filename 的二进制文件,如果文件能正常打开,则可以获得一个文件句柄号fid,否则fid=-1。
2)fscanf( )函数 调用格式:A=fscanf(fid,format),读取以fid指定的数据文件,并将它转换为format定义的格式化文本,然后赋给变量A。
3.2 数据读取程序代码如下:
fid=fopen('f:\\SJ.out','rt');
a=fscanf(fid,'%f'); %a为一个列矩阵 b=[];c=[];
for m=1:n:length(a) %n为PSPICE仿真数据在.out文件中数据的列数
b(m)=a(m,1); b(m+1)= a(m+1,1); b(m+2)= a(m+2,1);
----- b(m+n-1)= a(m+n-1,1);
c=[c;b(m) b(m+1) b(m+2) ---- b(m+n-1)];
end
c %将要进行处理的数据矩阵
4 小波变换理论在特征向量提取中应用
小波分析是Fourier分析、泛函分析、调和分析、数值分析的完美结合,特别是在信号处理、图像处理、语音分析以及众多非线形科学领域应用广泛。小波变换在低频部分具有较低的时间分辨率和较高的频率分辨率,在高频部分具有较低的频率分辨率和较高的时间分辨率,具有对信号的自适应。因小波分析具有局部分析和细化的功能,因此能描述信号的间断点、趋势和自相似性等性质。小波变换包括多分辨分析和小波包变换两部分,下面将介绍两种分析在模拟电路故障特征提取中的应用方法。
4.1.1 基于多分辨分析的故障特征提取
模拟电路故障一般都是软故障,利用小波变换来提取各频带的故障信息,分解过程用Mallat算法实现,而软故障信号的变化是比较微小的,可以用高频分解的部分来反映信号的变化,故可以将故障信号的高频系数序列进行绝对值求和,并按尺度顺序排列,作为模拟电路的故障特征向量。具体步骤如下:
a) 对信号进行N层Mallat分解,得到N个高频小波分解系数序列:
?d1,d,d?,d23n?;
nb) 对各层高频系数序列求绝对值和,则有序列d中分量的个数;
jDj??i?1dij,其中:n为
c) 特征向量构成,按尺度顺序,以各层高频小波分解系数序列的绝对值之和为元素作为特征向量:?D1,D2,D3?,Dn?; d) 为了提高神经网络收敛速度,进行归一化处理。
4.1.2基于多分辨分析的故障特征提取在MATLAB中实现的程序代码:
x=size(B);A=[];b=[];
for n=1:x(1) %B仿真得到的数据矩阵 s=B(n,:);
[C,L]=wavedec(s,4,'db3'); CD1=detcoef(C,L,1); CD2=detcoef(C,L,2); CD3=detcoef(C,L,3); CD4=detcoef(C,L,4); D1=0;D2=0;D3=0;D4=0; for m1=1:length(CD1)
D1=D1+abs(CD1(m1)); end
for m2=1:length(CD2)
D2=D2+abs(CD2(m2)); end
for m3=1:length(CD3)
D3=D3+abs(CD3(m3)); end
for m4=1:length(CD4)
D4=D4+abs(CD4(m4)); end
M=sqrt(D1^2+D2^2+D3^2+D4^2); b=[D1 D2 D3 D4];c=b./M; A=[A;c]; end
A %神经网络输入向量
4.2.1 基于小波包的故障特征提取
在模拟电路故障诊断中,当待测电路发生故障时,对各频带信号的能量都有一定的影响,因此故障信号中各频带中的能量能够体现出电路中元器件的损坏情况,某种或几种频率成分能量的改变即对应着故障模式。基于小波包的故障特征提取步骤如下:
a) 首先对信号进行小波包分解和信号重构,设X是原始信号S经
ij过小波包分解后第i层的第j个节点的小波包分解系数,是XnijS?的重构信号,则总信号
ijij?Sj?1ij;
b) 设S对应的能量为E,则有
P??Ei1,Ei2,Ei3?Ein?Eij??Sijdt?2n2?k?1xjk,其中:x(k=1,2,…n)
jk表示重构信号S的离散点的幅值,n?2; ijic) 则故障特征向量为P,P??Ei1,Ei2,Ei3?Ein?; d) 为了提高神经网络收敛速度,进行归一化处理
4.2.2基于小波包的故障特征提取在MATLAB中实现的程序代码
%对采样信号进行3层小波包分解,得到8(2^3)维特征向量
T=wpdec(X,3,'db3') %X为采样信号
B=[];C=[];D=[];E=[];m=0;n=0;m1=0; n1=0;m2=0;n2=0; for n=0:7
Z=wprcoef(T,[3 n]); C=[C;Z]; end
for m1=1:8
D=C(m1,:);e=0; for n1=1:length(D) e=e+(D(n1))^2; end
E=[E,e]; end
for m2=1:length(E) n2=n2+(E(m2))^2; end
E=E./sqrt(n2)
5 实例分析
下图为一带通滤波器电路图,分别用多分辨分析和小波包变换法得到图中R1下降为50欧时得电路故障特征向量: