CH7,MATLAB在电子信息领域应用简介
MATLAB集数值分析, 矩阵运算, 信号处理和图形显示
于一体, 构成了一个方便的, 界面友好的用户环境 。
MATLAB强大的扩展功能为各个领域的应用提供了基础 。
由各个领域的专家学者相继推出了 MATLAB工具箱, 其
中主要有信号处理 (signal processing),控制系统 (control
system),神经网络 (neural network),图像处理 (image
processing),鲁棒控制 (robust control),非线性系统控制
设计 (nonlinear control system design),系统辨识 (system
identification), 最优化 (optimisation), μ 分 析 与综 合
(μanalysis and synthesis),模糊逻辑 (fuzzy logic),小波
(wavelet),样条 (spline)等工具箱, 而且工具箱还在不断
增加 。
MATLAB工具箱给各个领域的研究和工程应用提供了有力
的工具 。 借助于这些工具, 各个层次的研究人员可直
观, 方便地进行分析, 计算及设计工作, 从而大大地
节省了时间 。
本章简要介绍 MATLAB在信号与系统, 信号处理等领域中
的基本应用
7.1 MATLAB在信号与系统中的应用
MATLAB特别适用于信号通过系统的分析 。
一, 连续信号和系统
MATLAB表示和分析连续信号和线性时不变 (LTI)连续系统
的问题, 严格说来, 只有用符号推理的方法才能表示
和分析连续系统 。 用数值方法是不能表示连续信号的 。
因为它给出的是各个样本点的数据 。 只有当样本点取
得很密时才可看成连续信号 。 所谓密是相对于信号变
化的快慢而言 。 以下均假定相对于采样点密度而言,
信号变化足够慢 。
1,连续信号的 MATLAB描述
exp07_01.m
列出单位冲激函数, 单位阶跃, 复指数函数等连续信号
的 MATLAB表达式 。
解:建模
1)单位冲激函数 δ (t)无法直接用 MATLAB描述, 可以把它看
做是宽度为 Δ (程序中用 dt表示 ),幅度为 1/ Δ 的矩形脉
冲 X1(t)=δ Δ (t-t1)=1/ Δ t1<t<t1+Δ
X1(t)=δ Δ (t-t1)=0 其余
2)单位阶跃函数:在 t=t1处跃升
X2(t)=u(t-t1)=1 t1<t<t1+Δ
X2(t)=u(t-t1)=0 其余
3)复指数函数 X3(t)=e(u+jw)t
若 w=0,它是实指数函数, 如 u=0,则为虚指数函数, 其实
部为余弦函数, 虚部为正弦函数 。 这里假设 u=-0.5,
w=10。
2,傅立叶分析
实际工程情况下, 几乎所有实际的周期信号都可以表示成
为谐波关系的一系列余弦项之和, 称之为傅立叶级数 。
并且对于一个线性时不变系统对单一正弦项的响应是很
容易计算出来的, 因此, 利用叠加定理求该系统对正弦
输入的和的响应也变得容易 。
傅立叶分析法的方便之处还在于利用一个时域信号的频域
特性来进行分析和设计, 这样大量的工作都是放在信号
的频谱及其结果和用途上 。
exp07_02.m
方波分解为多次正弦波之和 。
exp07_03.m
调幅信号通过带通滤波器
已知带通滤波器的系统函数为
激励电压 u1(t)=(1+cost)cos(100t),求
( 1) 带通滤波器的频率响应
( 2) 输出的稳态响应 u2(t)并画出波形 。
22
1
2
1 0 0)1(
2
)(
)()(
???? s
s
sU
sUsH
解:
用傅立叶级数激励信号和展开为
带通滤波器的频率响应
)1 0 1c o s (21)1 0 0c o s ()99c o s (21)(1 ttttu ???
22 1 0 0)1(
2)()(
???? ? ?
??
? j
jsHjH
js
exp07_04.m
非周期信号 ( 矩形脉冲 ) 的频谱分析
已知矩形脉冲信号, 求其在 ω=-40rad/s~ 40rad/x区间的
频谱 。
解:建模
傅立叶变换表达式为
按 MATLAB作数值计算的要求, 它不能计算无限空间, 根据
信号波形的情况, 将积分上下限定为 0~ 10s,并将 t分成
N等份, 用求和代替积分 。 这样, 上式可写为
?
??
??
?? dtetfjF tj?? )()(
=[f(t1),f(t2),…,f(tn)][e-jωt1,e-jωt2,…,e-jωtn]'Δ t
tetfjF itjN
i
i ??
?
?
? ??
1
)()(
在 MATLAB中, 利用元素群运算能力, 将 ω 设为一个
行数组, 带入上式, 则可写为
F=f*exp(-j*t'*w)*dt
其中, F是与 w等长的行向量, t'是列向量, w是行
向量, t'*w是一矩阵, 其行数与 t相同, 列数与 w
相同 。 这样, 在 MATLAB 中, F=f*exp(-
j*t'*w)*dt就完成了傅立叶变换 。
类似地, 也可得到傅立叶逆变换 。 表达式为
f=F*exp(j*w'*t)*dw/pi
等价于
?
?
?
0
)(1)( ??? ? dejFtf tj
二, 离散信号和系统
本节讨论用 MATLAB表示离散信号 ( 序列 ) 和线性时不变
( LTI) 离散系统的问题 。 由于 MATLAB数值计算的特点,
用它来分析离散的信号与系统是很方便的 。 在 MATLAB中,
可以用一个列向量来表示一个有限长度的序列 。 然而这
样一个向量并没有包含采样位置的信息 。 因此, 完全地
表示 x(n)要用 x和 n两个向量 。 例如序列
x(n)={2,1,-1,3,1,4,3,7}( 3为第一个采样点 )
n=[-3,-2,-1,0,1,2,3,4];
x=[2,1,-1,3,1,4,3,7];
当不需要采样位置信息时 ( 如序列从 n=0开始 ), 可以只用
x向量表示 。
由于内存有限, MATLAB无法表示无限序列 。
1,离散信号的 MATLAB描述
exp07_05.m
编写 MATLAB程序产生下列基本脉冲序列
1)单位脉冲序列 ( 单位序列或单位样值序列 ), 样
本点的起点 n0,终点 nf,在 ns处有一单位脉冲
( n0≤n s≤n f)
延迟 ns的单位脉冲序列表示为
X1(n)=δ (n-ns)=1 n=ns
X1(n)=0 其余
本例中, ns=3。
2)单位阶跃序列:起点 n0,终点 nf,在 ns前为 0,在 ns后跃
升为 1( n0≤n s≤n f)
延迟 ns的单位 阶跃 序列表示为
X2(n)=u(n-ns)=1 n≥n s
X2(n)=u(n-ns)=0 其余
3)复指数序列
X3(n)=e(α +jω)t n≥ 0
X3(n)=0 其余
若 ω=0,它是实指数序列, 如 α =0,则为虚指数序列, 其
实部为余弦序列, 虚部为正弦序列 。 这里假设 ω=0.5,
α =-0.2。
2,离散系统在各种输入下的响应
离散系统可以借助于线性常系数差分方程来描述 。
一般地, 对单输入单输出 ( SISO) 系统的线性,
常系数 N阶差分方程 ( DE— Diff Eqs) 可写成
y(n)+a1y(n-1)+… +aNy(n-N)
=b0x(n)+b1x(n-1)+… +bLx(n-L)
又称之为递归系统 。 差分方程的阶次等于输出序
列的延迟数 N,而与输入序列的延迟数 L无关 。
MATLAB中, 函数
y=filter(b,a,x,v0)
可求出系统对输入信号 x(n)的响应 y(n)。 其中,
b=[b0,b1,…,bL]为系统输入序列系数;
a=[a1,a2,…,aN]为系统输出序列系数;
( 注意, 此处 a0=1)
x为输入信号向量;
v0为系统初始状态值 。
exp07_06.m
假设离散系统的差分方程为
y(n)-y(n-1)+0.9y(n-2)-0.5y(n-3)
=5u(n)-2u(n-1)+2u(n-2)
( 1) 求单位脉冲响应, 计算 20步 。 令初始状态为 0。
( 2) 求单位阶跃响应, 计算 20步 。 令初始状态为 0。
( 3) 求零输入响应, 计算 20步 。
已知初始状态 y(0)=-2,y(-1)=2,y(-2)=-( 1/2)
( 4) 求复指数输入响应, 计算 20步 。 令初始状态为 0。
3,离散系统的稳定性
离散系统的稳定性常常通过系统零输入条件下的初始状态
响应给予定义:一个因果 LTI系统要是稳定的, 当且仅当
其零输入响应随 n→∞ 而衰减到 0。 此时的对应差分方程
为齐次方程 。
实际中, 当且仅当齐次方程全部特征根 rk的幅值都小于 1,
这种情况才会发生 。
exp07_07.m
某一离散的模型用差分方程表示为
y(n)-0.9y(n-1)+0.81y(n-2)=2x(n)+3x(n-2)
求零输入响应,计算 20步(样本数 n=30),并判断系统是
否稳定。假设初始状态为 y(-1)=1,y(-2)=0。
7.2 MATLAB在数字信号处理中的应用
MATLAB强大的运算和图形显示功能, 特别是它的频谱分析
和滤波器分析与设计功能很强, 可以使数字信号处理工
作变得简单, 直观 。 本节通过典型例题简要说明用
MATLAB进行数字信号处理的基本方法 。
一, 时域离散信号的产生及时域处理
时域离散信号用 x(n)表示, 时间变量 n(表示采样位置 )只能
取整数 。 因此, x(n)是一个离散序列, 以后简称序列 。
序列适合计算机存储与处理 。 本节将讨论用 MATLAB对序
列的运算 。
在 MATLAB中, 向量 x的下标只能从 1开始, 不能取零
或负值, 而 x(n)中的时间变量 n则完全不受限制 。
因此, 向量 x的下标不能简单地看做时间变量 n,
用一个向量 x不足以表示序列值 x(n)。 必须再用
另一个等长的定位时间变量 n。 x和 n同时使用才
能完整地表示一个序列, 只有当序列的时间变量
正好从 1开始时才可省去 n。
由于 n序列是按整数递增的, 可简单地用其初值 ns
决定, 因为它的终值 nf取决于 ns和 x的长度
length(x),故可写成:
n=[ns:nf]
exp07_08.m序列的相加和相乘 。 数学表达形式为
y(n)=x1(n)+x2(n)
y(n)=x1(n)*x2(n)
MATLAB表述为:
相加:将两序列时间变量延拓至同长, x1和 x2成为 x1a和
x2a,然后再逐点相加求 y=x1a+x2a。
相乘:将两序列时间变量延拓至同长, x1和 x2成为 x1a和
x2a,然后再逐点相乘求 y=x1a.*x2a.
假设给出两个序列 x1(n)和 x2(n)
x1=[0,1,2,3,4,3,2,1,0];n1=[-2:6]
x2=[2,2,0,0,0,-2,-2];n2=[2:8]
现要求计算它们的和 ya及乘积 yp。
exp07_09.m
给定因果稳定线性时不变系统的差分方程为
对下列输入序列 x(n),求出系统的输出序列 y(n)。
假设 b,a为 6阶低通数字滤波器差分方程的多项式
系数矩阵
b=[1,6,15,20,15,6,1]*0.0007378;
a=[1,-3.1836,4.6223,-3.7795,1.8136,-0.48,0.0544];
??
??
???
M
k
k
N
k
k knxbknya
00
)()(
二, z变换与傅立叶变换
1,z变换
信号与系统的分析方法中, 除时域分析方法外, 还有变
换域分析方法 。 在连续时间信号与系统中, 其变换域
方法就是大家熟悉的拉普拉斯变换与傅立叶变换 。 而
在离散时间信号与系统中, 其变换域分所法, 最重要
的一种就是 z变换法, 它在离散时间系统中的作用就如
同拉普拉斯变换在连续时间系统中的作用一样, 它把
描述离散系统的差分方程转化为简单的代数方程, 使
其求解大大简化 。 因而对求解离散时间系统而言, z变
换是一个极其重要的分析与设计数学工具 。
对于一个序列 x(n),其 z变换定义为
这是个无穷级数, 它存在着是否收敛和收敛条件的问题 。
MATLAB做数值分析时, 是无法直接求无限长度序列的 z变
换的, 要通过 MATLAB中的符号运算工具箱解决 。
如果 z变换是 z的有理分式, 虽然其逆变换是无限序列, 但
求它的系数和指数都是数值计算的范畴, 可以用 MATLAB
解决 。
如果序列 x的长度, 即 length(x)有限, 其 n=ns:nf,则其 z
变换为
它是一个 z的多项式, 不存在收敛问题 。
???
???
??
n
nznxzX )()(
?
?
??
nf
nsn
nznxzX )()(
用 MATLAB的表达式可写成:
X(z)=x(1)*z^-n(1)+x(2)*z^-n(2)+… +x(end)*z^n(end)
这是 MATLAB中信号序列 z变换的典型形式 。 它的逆 z
变换,就是其系数向量 x和指数向量 n。 这也是和
连续系统拉氏变换的不向之处 。 在 s域, 纯粹分
子上的 s多项式属于非物理系统, 分母上的 s的次
数必定高于分子 。 在 z域, 有限长信号序列的 z变
换必定是 (纯粹分子上的 )z的多项式, 无限长信
号序列的 z变换则是 z的有理分式, 而且其分母上
的 z的次数可以低于分子 。
用 z变换求离散信号 x(z)通过线性离散系统 H(z)的输出 Y(z):
它必然是 z的有理分式
通过长除或逆 Z变换可求出其对应的时域序列 。 用 MATLAB函
数 residuez可以求出它的极点留数分解
)(
)()()()(
zA
zBzHzXzY ??
NN
MM
zNAzNAzAA
zNBzNBzBB
zA
zBzY
????
????
?????
???????
)1()(.,,)2()1(
)1()(.,,)2()1(
)(
)()(
)1(1
)1(1
...)2()1()(1 )(...)2(1 )2()1(1 )1()( )( 1111 ?????????? ???? zkkzNp NrzprzprzA zB
其中的 r,p,k向量可由下列 MATLAB语句求得
[R,P,K]=residuez(B,A)
从而得出其逆 z变换, 即时域信号
y(n)=r(1)p(1)nu(n)+r(2)p(2)nu(n)+… +r(N)p(N)nu(n)
+k(1)δ (n)+k(2)δ (n-1)+…
其中 k是当 M≥N 时的直接项, 也即有限序列, 而其余的
则是无阻序列 。
函数 residuez(B,A)要求 A的首项 A(1)不为零,满足这个
条 件的有理分式应为
这时先按留数定理反变换分式部分, 再把反变换的结果
迟延 L拍 。
NN
MMLL
zNAzNAzAA
zNBzNBzBBZ
zA
zBZzY
????
??????
?????
???????
)1()(.,,)2()1(
)1()(.,,)2()1(
)(
)()(
)1(1
)1(1
实际运用时, 很少需要去算 z变换和逆 z变换,
MATLAB工具箱提供的 impz()就可以用来求出
(7.1)式的逆 z变换, 即其单位脉冲响应 。 其调
用方法为:
[h,t]=impz(B,A,N)
计算 h(n)= IZTH[(z)]。 h为存放 h(n)的列向量,
时间变量 N存放在列向量 T中 。 当 N为标量时,
表示 T= [0,N-1]‘,计算 h(n),n= 0,l,
2,…, N-1; 当 N为向量时, T= N,仅计算 N指
定的整数点上的 h(n)。
2,傅立叶变换
有限长序列在数字信号处理中是很重要的一种序列, 当然
可以用 z变换和傅立叶变换来研究, 但是对它来说, 可以
导出反映它的, 有限长, 这一特点的一种有用工具, 这
就是离散傅里叶变换 ( DFT) 。 离散傅立叶变换除了作为
有限长序列的 — 种傅立叶表示法在理论上相当重要之外,
而且由于存在着计算离散傅立叶变换的有效快速算法,
因而离散傅立叶变换在各种数字信号处理的算法中起着
核心的作用 。
傅立叶变换就是建立以时间为自变量的, 信号, 与以频率
为自变量的, 频谱函数, 之间的某种变换关系 。 所以
,时间, 或, 频率, 取连续值还是离数值, 就形成各种
不同形式的傅立叶变换对 。
傅立叶变换的几种可能形式有:
? 连续时间, 连续频率的傅立叶变换
这就是连续时间非周期信号 x(t)的傅立叶变换关系
? 连续时间, 离散频率的傅立叶变换 (傅立叶级数 )
x(t)代表一个周期 Tp的周期性连续时间函数, x(t)可展成
傅立叶级数 。
? 离散时间, 连续频率的傅立叶变换 (序列傅立叶变换 )
x(n)代表抽样间隔为 T的序列 ( 离散时间信号 ) 的傅立叶变
换, 这里的频率为数字频率 。
? 离散时间, 离散频率的傅立叶变换 (离散傅立叶变换 )
前三种傅立叶变换, 都不适合在计算机上运算, 因为至少
有一个域 ( 频域或时域 ) 中, 函数是连续的 。 因而从数
字计算角度, 要用到离散傅立叶变换 。
exp07_10.m
有限长度序列的 z变换
已知两序列 x1=[1,2,3],n1=[-1,1],x2=[2,4,3,5],
n2=[-2,1],求出 x1与 x2极其卷积 x的 z变换 。
三, 离散傅立叶变换 ( DFT)
离散傅立叶变换是数字信号处理中最重要的数学工具之
一 。 其实质是对有限长序列频谱的离散化, 即通过 DFT
使时域有限长序列与频域有限长序列相对应, 从而可在
频域用计算机进行信号处理 。 MATLAB中提供的变换函数
有:
一维快速正逆傅立叶变换 fft,ifft
X=fft(x,N) 其中, x为输入序列, N为 DFT变换区间长度 。
功能:采用 FFT算法计算序列向量 x的 N点 DFT。 省缺 N时 fft
函数自动按 x的长度计算 DFT。 ifft与 fft的调用格式类似 。
二维快速正逆傅立叶变换 fft2,ifft2
正逆离散余弦变换 dct,idct
y=dct(x,N)
功能:完成输入 x的正逆离散余弦变换, N省缺值为
lengrh(x)。
exp07_11.m
基本序列的离散傅立叶变换计算
已知以下序列
复正弦序列
余弦序列
正弦序列
分别对 DFT变换区间长度 N=16和 N=8计算以上序列的 N点
DFT,并绘制幅频特性曲线 。
)()( 81 nRenx Nni ?? ?
)()8c o s ()(2 nRnnx N??
)()8s in ()(3 nRnnx N??
exp07_12.m
用 DFT对连续信号做谱分析
已知 xa(t)=cos(200π t)+sin(100π t)+cos(50π t)
用 DFT分析 xa(t)的频谱结构 。 选择不同的截取长度
Tp,观察用 DFT进行频谱分析时存在的截断效应
( 频谱泄漏和谱间干扰 ) 。 试用加窗的办法减少
谱间干扰 。
解:建模
在计算机上用 DFT对模拟信号进行谱分析时, 只能
以有限大的采样频率 fs对模拟信号采样有限点样
本序列 (等价于截取模拟信号一段进行采样 )作
DFT变换, 得到模拟信号的近似频谱 。 其误差主
要来自以下因素:
① 截断效应 (频谱泄漏和谱间干扰 )
② 频谱混叠失真
因素①使谱分辨率 (能分辨开的两根谱线间的最小
间距 )降低,并产生谱间干扰:
因素②使折叠频率 (fs/2)附近的频谱产生较大失真。理论
和实践都已证明,加大截取长度 Tp可提高频率分辨率;
选择合适的窗函数可降低谱间干扰;而频谱混叠失真要
通过提高采样频率 fs或预滤波 (在采样之前滤除折叠频率
以外的频率成分 )来改善。
按题目要求编写程序验证截断效应及加窗的改善作用, 先
选取以下参数
采样频率 fs=400Hz,
采样信号序列 x(n)=xa(nT)w(n),n=0,1,2,…,N-1
对 x(n)作 4096点 DFT作为 xa(t)的近似频谱 Xa(jf)。
取三种截取长度① Tp=0.04s;② Tp=4*0.04s;③
Tp=8*0.04s和两种窗函数①矩形窗函数 w(n)= RN(n)。②
Hamming窗函数
四, 数字滤波器
数字滤波器的功能, 就是输入序列通过一定的运
算变换成输出序列 。 可以用两种方法来实现数
字滤波器:一种方法是采用计算机, 利用计算
机存储器, 运算器和控制器把滤波器所要完成
的运算编成程序通过计算机来执行, 也就是采
用计算机软件来实现;另一种方法是设计专用
的数字硬件 ( 数字信号处理器 ) 来实现 。
表示一个数字滤波器输入输出关系的常系数差分
方程为
??
??
????
M
k
k
N
k
k knxbknyany
01
)()()(
实现一个数字滤波器需要几种运算单元:加法器, 单位延
时和常数乘法器 。 对这些运算单元采用不同的运算步骤
和运算结构, 运算性能是存在着差异的 。 不同的运算结
构所需要的存储单元及乘法次数是不同的, 存储单元影
响运算的复杂性, 乘法次数直接影响运算的速度 。 此外,
在有限精度 ( 有限字长 ) 的情况下, 不同运算结果的误
差, 稳定性是不同的 。
也就是说, 要将数字滤波器用于处理数字信号, 就必须构
造出合适的实际实现结构 ( 硬件实现结构或软件实现结
构 ) 。 而且, 对同样的系统函数有不同的实现结构, 各
种结构的性能也不相同 。 常用的有以下几种 。
( 1) 直接型 (dir)结构:
它对应于系统传递函数形式
( 2) 级联型 (cas)结构 ( 又称为二阶分割 (sos)形式 ),
它对应于系统零极点增益形式, 为避免复系数出现, 采用
了二阶分割, 即将共轭零点和共轭极点分别组成实系数
二阶环节 。
( 3) 并联型 (par)结构:
它对应于系统部分分式形式, 为避免复系数出现, 也采用
了二阶分割, 即将共轭极点组成分母上的实系数二阶环
节, 留数则变为一阶环节 。
MATLAB提供了系统各种类型滤波器不同结构之间的转换函
数, 还有实现滤波时的计算函数 。 例如:
filter(),用来计算直接滤波器的输出;
filtic(),用来把过去的 x,y数据转化为初始条件;
sosfilt(),用来计算二阶分割型滤波器的输出;
latcfilt(),用来计算格型滤波器的输出 。
下面结合例题分别介绍 。
exp07_13.m
滤波器的系统函数为
将 H(z)转换成级联型和格型梯形结构 。
4321
4321
421216
18271131)(
????
????
????
?????
zzzz
zzzzzH
exp07_14.m
滤波器的系统函数为
求级联型结构和格型梯形结构 。
321
3
2
4
5
12
132)( ??? ???? zzzzH
五, 数字滤波器设计
数字滤波器可分为有限脉冲响应 ( FIR) 和无限脉冲响应
( IIR) 两种 。 IIR滤波器的系统函数是两个 z的多项式的
有理分式, 而 FIR滤波器的分母为 1,即只有一个分子多
项式 。
数字滤波器理想幅频特性是在 0到 π 的全部频段上, 根据上
限和下限频率 wc1,wc2取值不同分为 4种类型:
(1)低通滤波器, 当 wc1= O时;
(2)高通滤波器, 当 wc2= π 时;
(3)带通滤波器, 当 [wc1,wc2]区间幅度为 1,其余为 0时:
(4)带阻滤波器,当 [0,wcl]及 [wc2,1]区间幅度为 1,
其余为 0时。
有些情况下, 还对滤波器的相位特性提出要求, 理想的是
线性相位特性, 即相移与频率成线性关系 。
实际的滤波器不可能完全实现理想幅频特性, 必有 — 定误
差, 因此要规定适当的指标 。
1,有限长单位脉冲响应 ( FIR) 数字滤波器设计
FIR数字滤波器最大的优点是容易设计成线性相位特性, 而
且不存在稳定性问题 。 线性相位特性滤波器在图像处理
和数字通信等领域非常有用 。 MATLAB信号处理工具箱中
提供的 FIR数字滤波器的设计方法有以下两种 。
(1)窗函数法
选择合适的窗函数 w(n)来截取相应的单位脉冲响应 hd(n)的
适当长度 (即阶数 ),以保证实现要求的阻带衰减 。
不同的窗函数生成的过渡带宽度和阻带最小衰减是不同的 。
这就是选择窗函数的依据 。 MATLAB可调用的窗函数有:
boxcar(N),bartlett(N),hanning(N),blackman(N),
kaiser(N,β ),Hamming(N)等
其调用格式如下:
b=fir1(N,wn,'ftype',window)
功能:实现加窗线性相位 FIR数字滤波器设计, 可设计出标
准的低通, 高通, 带通, 带阻滤波器 。 其中, b为滤波器
系数, N为采样点数, wn为截止频率, 必须以 0开始, 以
Fs/2( 用归一化频率时为 1) 结束, Fs为采样频率, 省略
时默认为 2Hz。 ftype用 于指定滤波器类型, 可缺省 。
window指定窗函数, 可缺省 ( 默认为 Hamming) 。
(2)等波纹最佳一致逼近法 (也称 Chebyshev逼近 )
等波纹最佳一致逼近法是根据设计要求, 导出一组条件,
使整个逼近频率区域 ( 通带或阻带 ) 上逼近误差绝对
值的最大值为最小 。
按这种准则设计的滤波器其通带和阻带内呈现等波纹幅
度特性 。
MATLAB采用 remez算法实现线性相位 FIR数字滤波器的等
波纹最佳一致逼近设计 。 与其他设计法相比, 其优点
是, 设计指标相同时, 使滤波器阶数最低, 或阶数相
同时, 使通带最平坦, 阻带最小衰减最大;通带和阻
带均为等波纹形式, 最适合设计片段常数特性的滤波
器 。
MATLA Bremez算法用格式为:
b=remez(N,f,m,w,'ftype')
其中, w是加权向量, w值越大逼近精度越高,
ftype用于指定滤波器类型, w和 ftype可缺省 。
b为滤波器系数向量, N为采样点数, f为幅频
特性频率点向量, m为幅频特性幅度值向量 。
MATLAB提供 remezord函数用于估其 FIR数字滤波器的等波纹
最佳一致逼近设计的最低阶数 N,从而位滤波器在满足指
标的前提下造价最低 。 基本调用格式:
[N,fo,mo,w]=remezord(f,m,dev,Fs)
其返回参数 [N,fo,mo,w]供 remez函数直接使用。设计的滤
波器可以满足由参数 f,m,dev和 Fs指定的指标。 f和 m与
remez中所用的类似,m为幅频特性幅度值向量,f为幅频
特性频率点向量,是模拟频率或归一化数字频率,必须
以 0开始,以 Fs/2( 用归一化频率时为 1)结束,Fs为采
样频率,省略时默认为 2Hz。
dev为各逼近频段允许的幅频响应偏差 (波纹振幅 ),
remez函数可直接调用 remezord返回的参数, 使用格式:
b=remez(N,fo,mo,w)
exp07_15.m
用各种窗函数分别设计 FIR低通, 高通, 带通, 带阻滤
波器, 参数分别为:
低通:滤波器阶次 N=21,截止频率 wn=0.35
高通:滤波器阶次 N=21,截止频率 wn=0.65
带通:滤波器阶次 N=21,通带频率 0.35<w<0.65
带阻:滤波器阶次 N=21,阻带频率 wn<0.35,wn>0.65
exp07_16.m
用 remez函数设计 FIR低通滤波器
设计滤波器, 使逼近低通滤波特性 |Hd(ejω)|。
要求通带纹波 Rp≤ 3dB,阻带衰减 Rs≥ 60dB,并用最小
阶数实现 。 绘制设计的 FIR数字滤波幅频特性曲线, 检验
设计指标 。
??
?
??
???
???
???
16/50
4/01)( j
d eH
2,无限长单位脉冲响应 ( IIR) 数字滤波器设计
IIR数字滤波器具有无限长脉冲响应, 因而与模拟
滤波器相匹配 。 设计 IIR数字滤波器有两种方法 。
第一种方法先设计模拟低通滤波器, 然后通过频
带变换而成为其它频带选择滤波器 ( 带通, 高通
等 ), 最后通过滤波器变换而得到数字域的 IIR
滤波器 。 第二种方法先设计模拟低通滤波器, 然
后通过滤波器变换而得到数字域的低通滤波器,
最后通过频带变换而得到期望的 IIR滤波器 。 一
般采用第一种方法 。
exp07_17.m
低通 Butterworth模拟滤波器的设计
设计一个低通 Butterworth模拟滤波器, 指
标如下:
通带截止频率,fp=3400Hz
通带最大衰减,Rp=3dB
阻带截止频率,fs=4000Hz
阻带最小衰减,Rs=40dB
exp07_18.m
低通 ChebyshevII型滤波器的设计
设计一个低通 ChebyshevII型数字滤波器, 指标如下:
通带截止频率,ωp=0.2π ; 通带最大衰减,Rp=1dB
阻带截止频率,ωs==0.4π ; 阻带最小衰减,Rs=80dB
? 解:
MATLAB函数 cheby1()可设计低通, 高通, 带通, 带阻的
数字和模拟 ChebyshevI型滤波器, 其通带为等波纹,
阻带内为单调下降 。 函数 cheby2()可设计 ChebyshevII
型滤波器, 其通带为单调下降, 阻带内为等波纹 。 阶
数相同时, ChebyshevI型滤波器过渡带比 ChebyshevII
型窄, 但其代价是在通带内波纹较大 。
7.3 MATLAB辅助神经网络分析与设计
利用 MATLAB辅助人工智能方法分析与设计,如人工
神经网络,可以克服传统人工智能方法对于直觉,
如模式、语音识别、非结构化信息处理方面的缺
陷,能解决许多以前用传统方法无法解决的问题。
神经网络在很多领域中都有应用,以实现各种复
杂的功能。这些领域包括商业及经济估算、自动
检测和监视、计算机视觉、语音处理、机器人及
自动控制、优化问题、航空航天、银行金融业、
工业生产等。
使用神经网络的主要优点:
? 能够自适应样本数据,当数据中有噪声、形变和非线性
时,它也能够正常地工作:
? 容易继承现有的领域知识;
? 使用灵活,能够处理来自多个资源和决策系统的数据;
? 提供简单工具进行自动特征选取,产生有用的数据表示,
可作为专家系统的前端 (预处理器 )。
? 此外,神经网络还能提供十分快的优化过程,尤其以硬
件直接实现网络时,还可以加速联机应用程序的运行速
度。
? 当然,过分夸大神经网络的应用能力也是不恰当的,毕
竟它不是无所不能的。这就需要在实际工作中具体分析
问题,合理选择。
? MATLAB对应的神经网络工具箱包括了很多现有的神经网
络模型:
感知器模型
线性滤波器
BP网络
控制系统网络模型
径向基网络
自组织网络
反馈网络
自适应滤波和自适应训练
? MATLAB神经网络工具箱提供了许多经典算法, 使用它能
够快速地实现对实际问题的建模求解 。
?这种自适应学习的线性网络可以用于监控系统中, 当它跟
踪的信号可能引起不稳定时, 系统就会发出报警信号 。
?自适应学习线性网络模型的另一个应用则基于其能够对一
个非线性系统进行逼近, 并找到稳定的解, 使得结果的误
差平方和最小 。 当非线性系统在一个给定的点上稳定地进
行运行的时候, 自适应学习线性网络模型能够非常精确地
对它进行逼近 。 如果非线性系统跳到另一个点上运行, 则
自适应学习线性网络模型的工作点也能够随之改变, 并且
跟踪到相应的新的工作点 。
一, 在自适应预测中的应用 ( exp07_19.m)
预测一个时变信号序列 。 需要预测的信号是一个持续时间
为 6秒的信号 。 在前 4秒信号的采样频率为 20Hz,从第 4秒到
第 6秒, 信号的采样频率为 40Hz。
需注意的是, 采样速率必须足够快, 使得自适应线性网
络模型能够在最短的时间里保持与非线性系统在当前
工作点上是一致的 。 但是, 自适应线性网络模型还是
要花一定的时间, 用以得到关于非线性系统的足够多
的信息, 从而实现自适应的学习 。 为了将这个学习时
间尽量减少, 可以在非线性系统的输入信号上加上少
量的噪声 。 这样做使得非线性系统在一个很短的时间
里能够动态地增加更多的运行点, 从而使得自适应线
性网络能够更学习得更快 。 当然, 噪声要足够地小,
使得其被加上以后不会影响系统的正常使用,
二, 在线性系统辨识中的应用
当实际系统是一个线性系统或接近线性系统时, 利用
MATLAB函数可对实际系统建立模型 。
exp07_20.m
对实际系统进行辨识, 建立模型
对于一个线性系统, 假设其对输入信号进行线性放大后输
出, 其线性变换关系为
y=kx+b
其中, x为输入, k为放大倍数, b为平移量, y为输出 。
假设信号持续时间 5秒,采样间隔 25毫秒。
使用线性预测器, 线性系统模型不仅能够用来对线
性系统进行无误差的建模, 还可对一个线性系统
进行自适应辨识 。 网络能够随着被辨识的模型的
变化而相应地变化, 从而实现对它的自适应辨识 。
exp07_21.m
对实际系统进行辨识, 建立模型
给定一个信号 X,假设信号持续时间 6秒, 采样频率
为每秒 200次 。
结论
系统的自适应线性神经网络可以被用于保持大量的信息 。
例如, 自适应模型能够被用来在给定的时间里得到实际
系统的特征 。 又如, 自适应网络可以用于监控系统中,
当系统的值有可能引起不稳定时, 就发出报警信号 。
自适应线性模型的另一个用途是利用它能够找到一个线性
估计, 对非线性系统行为进行最小平方和误差估计 。
当非线性系统在一个给定的运行点工作时, 自适应线性模
型能够以高精度对它进行逼近 。 而一旦非线性系统转到
了另一个运行点, 自适应线性网络也会相应地转到那个
新的点上工作 。
为了保证线性系统模型对非线性系统在最短的时
间跟踪到当前运行点,采样速率要足够地快。
然而,为了得到非线性系统足够多的信息,以
对其进行合理的建模,网络需要有一个最小的
认知时间。为了尽量减小这个时间,可以对非
线性系统的输入信号加入小量的噪声。这样做
使得非线性系统在一个很短的时间里能够动态
地增加更多的运行点,从而使得自适应线性网
络能够学习得更快。当然,噪声要足够地小,
使得其被加上以后不会影响系统的正常使用。
三, 用于函数逼近
函数逼近可以用于模式识别, 诊断, 非线性系统的建模等 。
由于人工神经网络有很强的映射能力, 可以在函数逼近
方面进行实际应用 。
exp07_22.m
函数逼近 。 假设要逼近的非线性函数为正弦函数, 其频率
参数可以调节 。
实际使用中, 非线性函数的频率越高, 对网络的要求也越
高 。 相应地, 设置网络隐单元的神经元数目越多, 也就
越能对非线性程度越高的函数进行更好的逼近 。 可以改
变程序中原始非线性函数的频率 k及网络隐单元的神经元
数目 n,观察它们对网络性能的影响 。
7.4 MATLAB辅助模糊系统分析与设计
当前, 模糊逻辑已经被广泛用于生产和生活的各种领域,
特别是在工业控制和自动化领域 。 相对于精确逻辑, 模
糊逻辑在工程应用中有以下主要特点:
( 1) 模糊逻辑是柔性的 。 对于给定的系统, 很容易处理
以及直接增加新的功能, 不需要从头作起 。
( 2) 模糊逻辑建立在自然语言的基础上, 对数据的精确性
要求不高 。 模糊逻辑是建立在人类交流的基础上, 针对
数据的不精确性所提比的一种方法 。 系统的数据主要来
自语言描述的知识, 而不确定性是语言信息的一个重要
特点 。
( 3) 模糊逻辑能充分利用专家信息 。 相比于神经网络,
模糊逻辑建立在已经熟悉相关系统的专家基础上,
能够充分利用现有的专家知识 。
( 4) 模糊逻辑易与传统的控制技术相结合 。 模糊系统
不需要替代传统的控制方法, 很多情况下只是在原
有的控制方法上作简单的修改 。
当然模糊逻辑也不是万能的 。 模糊逻辑是一种将输入
空间映射到输出空间的有效方法 。 如果这种映射对
于解决问题并没有效果, 就应当试试其他的方法 。
例如, 目前很多工业控制器在没有使用模糊逻辑时,
就已经很好用了 。 但是, 当熟悉了模糊逻辑, 就会
发现它在快速有效处理不精确或非线性问题时, 是
非常好的工具 。
模糊逻辑工具箱是数字计算机环境下的函数集成体, 可
以利用它所提供的工具在 MATLAB框架下设计, 建立
以及测试模糊推理系统, 结合 Simulink,还可以对模
糊系统进行模拟仿真, 也可以编写独立的 c语言程序来
调用 MATLAB中所设计的模糊系统 。 对于一些简单的
应用, MATLAB模糊逻辑工具箱提供了图形用户界面
帮助使用者方便, 快速地完成工作 。
在最新的 MATLAB6,X版本中模糊逻辑工具箱提供三种
类型的工具:命令行函数、图形交互工具( GUI)以
及仿真模块 ( Simulink)和示例。下面通过一个典型
的例子来说明模糊逻辑的作用。
exp07_23.m
小费问题
对于小费问题, 现在只考虑关键因素, 把问题简化, 的出
下面三条规则:
( 1) 当服务差或食物差时, 小费少;
( 2) 当服务好时, 小费中;
( 3) 当服务很好或食物好时, 小费高 。
一, 基本模糊推理系统编辑器
通过 MATLAB模糊工具箱的图形界面可视化工具来设计 。
通常可视化工具来设计要方便简单并且直观 。
在 MATLAB命令窗口执行 fuzzy命令即可激活基本模糊推理
系统编辑器。
1,文件 (File)菜单
New Mamdani FIS,新建 Mamdani型模糊推理系统
New Sugeno FIS,新建 Sugeno型模糊推理系统
Open FIS from disk,从磁盘打开一个模糊推理系统文件
Save to disk,将当前的模糊推理系统保存到磁盘文件中
Save to disk as,将当前的模糊推理系统另存为一个文件
Open FIS from Workspace,从工作空间加载模糊推理系统
Save to Workspace,保存到工作空间;
Save to Workspace as,另存到某一模糊推理系统矩阵中
Print,打印模糊推理系统的信息
Close window,关闭窗口
2,编辑 ( Edit) 菜单
Add input,添加输入语言变量;
Add output,添加输出语言变量:
Remove variable,删除语言变量。
3,视图 (View)菜单
Edit FISP roperties,修改模糊推理系统的特性;
Edit membership functions,打开隶属度函数编辑器;
Edit Rules,打开模糊规则编辑器;
View Rules,打开模糊规则浏览器;
view surface,打开模糊系统输入输出特性浏览器。
二, 隶属度函数编辑器 (mfedit)
在命令窗口键入 mfedit或在基本模糊推理系统编辑器中选
择编辑隶属度函数菜单, 都可以激活隶属度函数编辑器 。
该编辑器提供了对输入输出语言变量各语言值的隶属度
函数类型, 参数进行编辑与修改的图形界面工具 。
编辑菜单的功能包括;
Add MFs…, 添加系统提供的模糊隶属度函数;
Add Custom MF…, 添加用户自定义的模糊隶属度函数用
户编写的,m函数 );
Remove Current MF,删除当前编辑的隶属度函数;
Remove All MF,删除当前变量所有的隶属度函数;
三, 模糊规则编辑器 (Ruleedit)
在命令窗口键入 ruleedit或在基本模糊推理系统编辑器中
选择编辑模糊规则菜单, 都可以激活模糊规则编辑器 。
该编辑器提供了添加, 修改和删除模糊规则的图形界
面 。 在模糊推理系统编辑器菜单中选择 [View],[Edit
Rules… ]或双击 FIS Edit界面中间白色的模糊规则图标 。
在模糊规则编辑器中提供了一个文本编辑窗口, 用于规
则的输入和修改 。 模糊规则的形式可以有三种, 即语
言型 ( Verbose), 符 号 型 ( Simbolic), 索 引 型
( Indexed) 。 在窗口的下部有一个下拉列表框, 供用
户选择 。
四, 模糊规则观察器 (Ruleview)
在命令窗口键入 Ruleview或在基本模糊推理系统编辑器
中选择相应菜单, 都可以激活模糊规则浏览器 。 模糊
规则浏览器中, 以图形形式描述了模糊推理系统的推
理过程, 可以在窗口中改变系统输入的数值来观察模
糊逻辑推理系统的输出情况 。
五, 模糊推理输入输出曲面视图 (Surfview)
在命令窗口键入 Surfview或在基本模糊推理系统编辑器
中选择相应菜单, 即可打开模糊推理输入输出曲面视
图窗口 。 该窗口以图形形式显示了模糊推理系统的输
入输出特性曲面 。 在窗口内或用菜单选项改变相应参
数可查看不同性质的图象 。
谢谢您的认真听课
祝同学们:
学习进步
学以致用
考试时间
初步定于 2004年 4月 20号
MATLAB集数值分析, 矩阵运算, 信号处理和图形显示
于一体, 构成了一个方便的, 界面友好的用户环境 。
MATLAB强大的扩展功能为各个领域的应用提供了基础 。
由各个领域的专家学者相继推出了 MATLAB工具箱, 其
中主要有信号处理 (signal processing),控制系统 (control
system),神经网络 (neural network),图像处理 (image
processing),鲁棒控制 (robust control),非线性系统控制
设计 (nonlinear control system design),系统辨识 (system
identification), 最优化 (optimisation), μ 分 析 与综 合
(μanalysis and synthesis),模糊逻辑 (fuzzy logic),小波
(wavelet),样条 (spline)等工具箱, 而且工具箱还在不断
增加 。
MATLAB工具箱给各个领域的研究和工程应用提供了有力
的工具 。 借助于这些工具, 各个层次的研究人员可直
观, 方便地进行分析, 计算及设计工作, 从而大大地
节省了时间 。
本章简要介绍 MATLAB在信号与系统, 信号处理等领域中
的基本应用
7.1 MATLAB在信号与系统中的应用
MATLAB特别适用于信号通过系统的分析 。
一, 连续信号和系统
MATLAB表示和分析连续信号和线性时不变 (LTI)连续系统
的问题, 严格说来, 只有用符号推理的方法才能表示
和分析连续系统 。 用数值方法是不能表示连续信号的 。
因为它给出的是各个样本点的数据 。 只有当样本点取
得很密时才可看成连续信号 。 所谓密是相对于信号变
化的快慢而言 。 以下均假定相对于采样点密度而言,
信号变化足够慢 。
1,连续信号的 MATLAB描述
exp07_01.m
列出单位冲激函数, 单位阶跃, 复指数函数等连续信号
的 MATLAB表达式 。
解:建模
1)单位冲激函数 δ (t)无法直接用 MATLAB描述, 可以把它看
做是宽度为 Δ (程序中用 dt表示 ),幅度为 1/ Δ 的矩形脉
冲 X1(t)=δ Δ (t-t1)=1/ Δ t1<t<t1+Δ
X1(t)=δ Δ (t-t1)=0 其余
2)单位阶跃函数:在 t=t1处跃升
X2(t)=u(t-t1)=1 t1<t<t1+Δ
X2(t)=u(t-t1)=0 其余
3)复指数函数 X3(t)=e(u+jw)t
若 w=0,它是实指数函数, 如 u=0,则为虚指数函数, 其实
部为余弦函数, 虚部为正弦函数 。 这里假设 u=-0.5,
w=10。
2,傅立叶分析
实际工程情况下, 几乎所有实际的周期信号都可以表示成
为谐波关系的一系列余弦项之和, 称之为傅立叶级数 。
并且对于一个线性时不变系统对单一正弦项的响应是很
容易计算出来的, 因此, 利用叠加定理求该系统对正弦
输入的和的响应也变得容易 。
傅立叶分析法的方便之处还在于利用一个时域信号的频域
特性来进行分析和设计, 这样大量的工作都是放在信号
的频谱及其结果和用途上 。
exp07_02.m
方波分解为多次正弦波之和 。
exp07_03.m
调幅信号通过带通滤波器
已知带通滤波器的系统函数为
激励电压 u1(t)=(1+cost)cos(100t),求
( 1) 带通滤波器的频率响应
( 2) 输出的稳态响应 u2(t)并画出波形 。
22
1
2
1 0 0)1(
2
)(
)()(
???? s
s
sU
sUsH
解:
用傅立叶级数激励信号和展开为
带通滤波器的频率响应
)1 0 1c o s (21)1 0 0c o s ()99c o s (21)(1 ttttu ???
22 1 0 0)1(
2)()(
???? ? ?
??
? j
jsHjH
js
exp07_04.m
非周期信号 ( 矩形脉冲 ) 的频谱分析
已知矩形脉冲信号, 求其在 ω=-40rad/s~ 40rad/x区间的
频谱 。
解:建模
傅立叶变换表达式为
按 MATLAB作数值计算的要求, 它不能计算无限空间, 根据
信号波形的情况, 将积分上下限定为 0~ 10s,并将 t分成
N等份, 用求和代替积分 。 这样, 上式可写为
?
??
??
?? dtetfjF tj?? )()(
=[f(t1),f(t2),…,f(tn)][e-jωt1,e-jωt2,…,e-jωtn]'Δ t
tetfjF itjN
i
i ??
?
?
? ??
1
)()(
在 MATLAB中, 利用元素群运算能力, 将 ω 设为一个
行数组, 带入上式, 则可写为
F=f*exp(-j*t'*w)*dt
其中, F是与 w等长的行向量, t'是列向量, w是行
向量, t'*w是一矩阵, 其行数与 t相同, 列数与 w
相同 。 这样, 在 MATLAB 中, F=f*exp(-
j*t'*w)*dt就完成了傅立叶变换 。
类似地, 也可得到傅立叶逆变换 。 表达式为
f=F*exp(j*w'*t)*dw/pi
等价于
?
?
?
0
)(1)( ??? ? dejFtf tj
二, 离散信号和系统
本节讨论用 MATLAB表示离散信号 ( 序列 ) 和线性时不变
( LTI) 离散系统的问题 。 由于 MATLAB数值计算的特点,
用它来分析离散的信号与系统是很方便的 。 在 MATLAB中,
可以用一个列向量来表示一个有限长度的序列 。 然而这
样一个向量并没有包含采样位置的信息 。 因此, 完全地
表示 x(n)要用 x和 n两个向量 。 例如序列
x(n)={2,1,-1,3,1,4,3,7}( 3为第一个采样点 )
n=[-3,-2,-1,0,1,2,3,4];
x=[2,1,-1,3,1,4,3,7];
当不需要采样位置信息时 ( 如序列从 n=0开始 ), 可以只用
x向量表示 。
由于内存有限, MATLAB无法表示无限序列 。
1,离散信号的 MATLAB描述
exp07_05.m
编写 MATLAB程序产生下列基本脉冲序列
1)单位脉冲序列 ( 单位序列或单位样值序列 ), 样
本点的起点 n0,终点 nf,在 ns处有一单位脉冲
( n0≤n s≤n f)
延迟 ns的单位脉冲序列表示为
X1(n)=δ (n-ns)=1 n=ns
X1(n)=0 其余
本例中, ns=3。
2)单位阶跃序列:起点 n0,终点 nf,在 ns前为 0,在 ns后跃
升为 1( n0≤n s≤n f)
延迟 ns的单位 阶跃 序列表示为
X2(n)=u(n-ns)=1 n≥n s
X2(n)=u(n-ns)=0 其余
3)复指数序列
X3(n)=e(α +jω)t n≥ 0
X3(n)=0 其余
若 ω=0,它是实指数序列, 如 α =0,则为虚指数序列, 其
实部为余弦序列, 虚部为正弦序列 。 这里假设 ω=0.5,
α =-0.2。
2,离散系统在各种输入下的响应
离散系统可以借助于线性常系数差分方程来描述 。
一般地, 对单输入单输出 ( SISO) 系统的线性,
常系数 N阶差分方程 ( DE— Diff Eqs) 可写成
y(n)+a1y(n-1)+… +aNy(n-N)
=b0x(n)+b1x(n-1)+… +bLx(n-L)
又称之为递归系统 。 差分方程的阶次等于输出序
列的延迟数 N,而与输入序列的延迟数 L无关 。
MATLAB中, 函数
y=filter(b,a,x,v0)
可求出系统对输入信号 x(n)的响应 y(n)。 其中,
b=[b0,b1,…,bL]为系统输入序列系数;
a=[a1,a2,…,aN]为系统输出序列系数;
( 注意, 此处 a0=1)
x为输入信号向量;
v0为系统初始状态值 。
exp07_06.m
假设离散系统的差分方程为
y(n)-y(n-1)+0.9y(n-2)-0.5y(n-3)
=5u(n)-2u(n-1)+2u(n-2)
( 1) 求单位脉冲响应, 计算 20步 。 令初始状态为 0。
( 2) 求单位阶跃响应, 计算 20步 。 令初始状态为 0。
( 3) 求零输入响应, 计算 20步 。
已知初始状态 y(0)=-2,y(-1)=2,y(-2)=-( 1/2)
( 4) 求复指数输入响应, 计算 20步 。 令初始状态为 0。
3,离散系统的稳定性
离散系统的稳定性常常通过系统零输入条件下的初始状态
响应给予定义:一个因果 LTI系统要是稳定的, 当且仅当
其零输入响应随 n→∞ 而衰减到 0。 此时的对应差分方程
为齐次方程 。
实际中, 当且仅当齐次方程全部特征根 rk的幅值都小于 1,
这种情况才会发生 。
exp07_07.m
某一离散的模型用差分方程表示为
y(n)-0.9y(n-1)+0.81y(n-2)=2x(n)+3x(n-2)
求零输入响应,计算 20步(样本数 n=30),并判断系统是
否稳定。假设初始状态为 y(-1)=1,y(-2)=0。
7.2 MATLAB在数字信号处理中的应用
MATLAB强大的运算和图形显示功能, 特别是它的频谱分析
和滤波器分析与设计功能很强, 可以使数字信号处理工
作变得简单, 直观 。 本节通过典型例题简要说明用
MATLAB进行数字信号处理的基本方法 。
一, 时域离散信号的产生及时域处理
时域离散信号用 x(n)表示, 时间变量 n(表示采样位置 )只能
取整数 。 因此, x(n)是一个离散序列, 以后简称序列 。
序列适合计算机存储与处理 。 本节将讨论用 MATLAB对序
列的运算 。
在 MATLAB中, 向量 x的下标只能从 1开始, 不能取零
或负值, 而 x(n)中的时间变量 n则完全不受限制 。
因此, 向量 x的下标不能简单地看做时间变量 n,
用一个向量 x不足以表示序列值 x(n)。 必须再用
另一个等长的定位时间变量 n。 x和 n同时使用才
能完整地表示一个序列, 只有当序列的时间变量
正好从 1开始时才可省去 n。
由于 n序列是按整数递增的, 可简单地用其初值 ns
决定, 因为它的终值 nf取决于 ns和 x的长度
length(x),故可写成:
n=[ns:nf]
exp07_08.m序列的相加和相乘 。 数学表达形式为
y(n)=x1(n)+x2(n)
y(n)=x1(n)*x2(n)
MATLAB表述为:
相加:将两序列时间变量延拓至同长, x1和 x2成为 x1a和
x2a,然后再逐点相加求 y=x1a+x2a。
相乘:将两序列时间变量延拓至同长, x1和 x2成为 x1a和
x2a,然后再逐点相乘求 y=x1a.*x2a.
假设给出两个序列 x1(n)和 x2(n)
x1=[0,1,2,3,4,3,2,1,0];n1=[-2:6]
x2=[2,2,0,0,0,-2,-2];n2=[2:8]
现要求计算它们的和 ya及乘积 yp。
exp07_09.m
给定因果稳定线性时不变系统的差分方程为
对下列输入序列 x(n),求出系统的输出序列 y(n)。
假设 b,a为 6阶低通数字滤波器差分方程的多项式
系数矩阵
b=[1,6,15,20,15,6,1]*0.0007378;
a=[1,-3.1836,4.6223,-3.7795,1.8136,-0.48,0.0544];
??
??
???
M
k
k
N
k
k knxbknya
00
)()(
二, z变换与傅立叶变换
1,z变换
信号与系统的分析方法中, 除时域分析方法外, 还有变
换域分析方法 。 在连续时间信号与系统中, 其变换域
方法就是大家熟悉的拉普拉斯变换与傅立叶变换 。 而
在离散时间信号与系统中, 其变换域分所法, 最重要
的一种就是 z变换法, 它在离散时间系统中的作用就如
同拉普拉斯变换在连续时间系统中的作用一样, 它把
描述离散系统的差分方程转化为简单的代数方程, 使
其求解大大简化 。 因而对求解离散时间系统而言, z变
换是一个极其重要的分析与设计数学工具 。
对于一个序列 x(n),其 z变换定义为
这是个无穷级数, 它存在着是否收敛和收敛条件的问题 。
MATLAB做数值分析时, 是无法直接求无限长度序列的 z变
换的, 要通过 MATLAB中的符号运算工具箱解决 。
如果 z变换是 z的有理分式, 虽然其逆变换是无限序列, 但
求它的系数和指数都是数值计算的范畴, 可以用 MATLAB
解决 。
如果序列 x的长度, 即 length(x)有限, 其 n=ns:nf,则其 z
变换为
它是一个 z的多项式, 不存在收敛问题 。
???
???
??
n
nznxzX )()(
?
?
??
nf
nsn
nznxzX )()(
用 MATLAB的表达式可写成:
X(z)=x(1)*z^-n(1)+x(2)*z^-n(2)+… +x(end)*z^n(end)
这是 MATLAB中信号序列 z变换的典型形式 。 它的逆 z
变换,就是其系数向量 x和指数向量 n。 这也是和
连续系统拉氏变换的不向之处 。 在 s域, 纯粹分
子上的 s多项式属于非物理系统, 分母上的 s的次
数必定高于分子 。 在 z域, 有限长信号序列的 z变
换必定是 (纯粹分子上的 )z的多项式, 无限长信
号序列的 z变换则是 z的有理分式, 而且其分母上
的 z的次数可以低于分子 。
用 z变换求离散信号 x(z)通过线性离散系统 H(z)的输出 Y(z):
它必然是 z的有理分式
通过长除或逆 Z变换可求出其对应的时域序列 。 用 MATLAB函
数 residuez可以求出它的极点留数分解
)(
)()()()(
zA
zBzHzXzY ??
NN
MM
zNAzNAzAA
zNBzNBzBB
zA
zBzY
????
????
?????
???????
)1()(.,,)2()1(
)1()(.,,)2()1(
)(
)()(
)1(1
)1(1
...)2()1()(1 )(...)2(1 )2()1(1 )1()( )( 1111 ?????????? ???? zkkzNp NrzprzprzA zB
其中的 r,p,k向量可由下列 MATLAB语句求得
[R,P,K]=residuez(B,A)
从而得出其逆 z变换, 即时域信号
y(n)=r(1)p(1)nu(n)+r(2)p(2)nu(n)+… +r(N)p(N)nu(n)
+k(1)δ (n)+k(2)δ (n-1)+…
其中 k是当 M≥N 时的直接项, 也即有限序列, 而其余的
则是无阻序列 。
函数 residuez(B,A)要求 A的首项 A(1)不为零,满足这个
条 件的有理分式应为
这时先按留数定理反变换分式部分, 再把反变换的结果
迟延 L拍 。
NN
MMLL
zNAzNAzAA
zNBzNBzBBZ
zA
zBZzY
????
??????
?????
???????
)1()(.,,)2()1(
)1()(.,,)2()1(
)(
)()(
)1(1
)1(1
实际运用时, 很少需要去算 z变换和逆 z变换,
MATLAB工具箱提供的 impz()就可以用来求出
(7.1)式的逆 z变换, 即其单位脉冲响应 。 其调
用方法为:
[h,t]=impz(B,A,N)
计算 h(n)= IZTH[(z)]。 h为存放 h(n)的列向量,
时间变量 N存放在列向量 T中 。 当 N为标量时,
表示 T= [0,N-1]‘,计算 h(n),n= 0,l,
2,…, N-1; 当 N为向量时, T= N,仅计算 N指
定的整数点上的 h(n)。
2,傅立叶变换
有限长序列在数字信号处理中是很重要的一种序列, 当然
可以用 z变换和傅立叶变换来研究, 但是对它来说, 可以
导出反映它的, 有限长, 这一特点的一种有用工具, 这
就是离散傅里叶变换 ( DFT) 。 离散傅立叶变换除了作为
有限长序列的 — 种傅立叶表示法在理论上相当重要之外,
而且由于存在着计算离散傅立叶变换的有效快速算法,
因而离散傅立叶变换在各种数字信号处理的算法中起着
核心的作用 。
傅立叶变换就是建立以时间为自变量的, 信号, 与以频率
为自变量的, 频谱函数, 之间的某种变换关系 。 所以
,时间, 或, 频率, 取连续值还是离数值, 就形成各种
不同形式的傅立叶变换对 。
傅立叶变换的几种可能形式有:
? 连续时间, 连续频率的傅立叶变换
这就是连续时间非周期信号 x(t)的傅立叶变换关系
? 连续时间, 离散频率的傅立叶变换 (傅立叶级数 )
x(t)代表一个周期 Tp的周期性连续时间函数, x(t)可展成
傅立叶级数 。
? 离散时间, 连续频率的傅立叶变换 (序列傅立叶变换 )
x(n)代表抽样间隔为 T的序列 ( 离散时间信号 ) 的傅立叶变
换, 这里的频率为数字频率 。
? 离散时间, 离散频率的傅立叶变换 (离散傅立叶变换 )
前三种傅立叶变换, 都不适合在计算机上运算, 因为至少
有一个域 ( 频域或时域 ) 中, 函数是连续的 。 因而从数
字计算角度, 要用到离散傅立叶变换 。
exp07_10.m
有限长度序列的 z变换
已知两序列 x1=[1,2,3],n1=[-1,1],x2=[2,4,3,5],
n2=[-2,1],求出 x1与 x2极其卷积 x的 z变换 。
三, 离散傅立叶变换 ( DFT)
离散傅立叶变换是数字信号处理中最重要的数学工具之
一 。 其实质是对有限长序列频谱的离散化, 即通过 DFT
使时域有限长序列与频域有限长序列相对应, 从而可在
频域用计算机进行信号处理 。 MATLAB中提供的变换函数
有:
一维快速正逆傅立叶变换 fft,ifft
X=fft(x,N) 其中, x为输入序列, N为 DFT变换区间长度 。
功能:采用 FFT算法计算序列向量 x的 N点 DFT。 省缺 N时 fft
函数自动按 x的长度计算 DFT。 ifft与 fft的调用格式类似 。
二维快速正逆傅立叶变换 fft2,ifft2
正逆离散余弦变换 dct,idct
y=dct(x,N)
功能:完成输入 x的正逆离散余弦变换, N省缺值为
lengrh(x)。
exp07_11.m
基本序列的离散傅立叶变换计算
已知以下序列
复正弦序列
余弦序列
正弦序列
分别对 DFT变换区间长度 N=16和 N=8计算以上序列的 N点
DFT,并绘制幅频特性曲线 。
)()( 81 nRenx Nni ?? ?
)()8c o s ()(2 nRnnx N??
)()8s in ()(3 nRnnx N??
exp07_12.m
用 DFT对连续信号做谱分析
已知 xa(t)=cos(200π t)+sin(100π t)+cos(50π t)
用 DFT分析 xa(t)的频谱结构 。 选择不同的截取长度
Tp,观察用 DFT进行频谱分析时存在的截断效应
( 频谱泄漏和谱间干扰 ) 。 试用加窗的办法减少
谱间干扰 。
解:建模
在计算机上用 DFT对模拟信号进行谱分析时, 只能
以有限大的采样频率 fs对模拟信号采样有限点样
本序列 (等价于截取模拟信号一段进行采样 )作
DFT变换, 得到模拟信号的近似频谱 。 其误差主
要来自以下因素:
① 截断效应 (频谱泄漏和谱间干扰 )
② 频谱混叠失真
因素①使谱分辨率 (能分辨开的两根谱线间的最小
间距 )降低,并产生谱间干扰:
因素②使折叠频率 (fs/2)附近的频谱产生较大失真。理论
和实践都已证明,加大截取长度 Tp可提高频率分辨率;
选择合适的窗函数可降低谱间干扰;而频谱混叠失真要
通过提高采样频率 fs或预滤波 (在采样之前滤除折叠频率
以外的频率成分 )来改善。
按题目要求编写程序验证截断效应及加窗的改善作用, 先
选取以下参数
采样频率 fs=400Hz,
采样信号序列 x(n)=xa(nT)w(n),n=0,1,2,…,N-1
对 x(n)作 4096点 DFT作为 xa(t)的近似频谱 Xa(jf)。
取三种截取长度① Tp=0.04s;② Tp=4*0.04s;③
Tp=8*0.04s和两种窗函数①矩形窗函数 w(n)= RN(n)。②
Hamming窗函数
四, 数字滤波器
数字滤波器的功能, 就是输入序列通过一定的运
算变换成输出序列 。 可以用两种方法来实现数
字滤波器:一种方法是采用计算机, 利用计算
机存储器, 运算器和控制器把滤波器所要完成
的运算编成程序通过计算机来执行, 也就是采
用计算机软件来实现;另一种方法是设计专用
的数字硬件 ( 数字信号处理器 ) 来实现 。
表示一个数字滤波器输入输出关系的常系数差分
方程为
??
??
????
M
k
k
N
k
k knxbknyany
01
)()()(
实现一个数字滤波器需要几种运算单元:加法器, 单位延
时和常数乘法器 。 对这些运算单元采用不同的运算步骤
和运算结构, 运算性能是存在着差异的 。 不同的运算结
构所需要的存储单元及乘法次数是不同的, 存储单元影
响运算的复杂性, 乘法次数直接影响运算的速度 。 此外,
在有限精度 ( 有限字长 ) 的情况下, 不同运算结果的误
差, 稳定性是不同的 。
也就是说, 要将数字滤波器用于处理数字信号, 就必须构
造出合适的实际实现结构 ( 硬件实现结构或软件实现结
构 ) 。 而且, 对同样的系统函数有不同的实现结构, 各
种结构的性能也不相同 。 常用的有以下几种 。
( 1) 直接型 (dir)结构:
它对应于系统传递函数形式
( 2) 级联型 (cas)结构 ( 又称为二阶分割 (sos)形式 ),
它对应于系统零极点增益形式, 为避免复系数出现, 采用
了二阶分割, 即将共轭零点和共轭极点分别组成实系数
二阶环节 。
( 3) 并联型 (par)结构:
它对应于系统部分分式形式, 为避免复系数出现, 也采用
了二阶分割, 即将共轭极点组成分母上的实系数二阶环
节, 留数则变为一阶环节 。
MATLAB提供了系统各种类型滤波器不同结构之间的转换函
数, 还有实现滤波时的计算函数 。 例如:
filter(),用来计算直接滤波器的输出;
filtic(),用来把过去的 x,y数据转化为初始条件;
sosfilt(),用来计算二阶分割型滤波器的输出;
latcfilt(),用来计算格型滤波器的输出 。
下面结合例题分别介绍 。
exp07_13.m
滤波器的系统函数为
将 H(z)转换成级联型和格型梯形结构 。
4321
4321
421216
18271131)(
????
????
????
?????
zzzz
zzzzzH
exp07_14.m
滤波器的系统函数为
求级联型结构和格型梯形结构 。
321
3
2
4
5
12
132)( ??? ???? zzzzH
五, 数字滤波器设计
数字滤波器可分为有限脉冲响应 ( FIR) 和无限脉冲响应
( IIR) 两种 。 IIR滤波器的系统函数是两个 z的多项式的
有理分式, 而 FIR滤波器的分母为 1,即只有一个分子多
项式 。
数字滤波器理想幅频特性是在 0到 π 的全部频段上, 根据上
限和下限频率 wc1,wc2取值不同分为 4种类型:
(1)低通滤波器, 当 wc1= O时;
(2)高通滤波器, 当 wc2= π 时;
(3)带通滤波器, 当 [wc1,wc2]区间幅度为 1,其余为 0时:
(4)带阻滤波器,当 [0,wcl]及 [wc2,1]区间幅度为 1,
其余为 0时。
有些情况下, 还对滤波器的相位特性提出要求, 理想的是
线性相位特性, 即相移与频率成线性关系 。
实际的滤波器不可能完全实现理想幅频特性, 必有 — 定误
差, 因此要规定适当的指标 。
1,有限长单位脉冲响应 ( FIR) 数字滤波器设计
FIR数字滤波器最大的优点是容易设计成线性相位特性, 而
且不存在稳定性问题 。 线性相位特性滤波器在图像处理
和数字通信等领域非常有用 。 MATLAB信号处理工具箱中
提供的 FIR数字滤波器的设计方法有以下两种 。
(1)窗函数法
选择合适的窗函数 w(n)来截取相应的单位脉冲响应 hd(n)的
适当长度 (即阶数 ),以保证实现要求的阻带衰减 。
不同的窗函数生成的过渡带宽度和阻带最小衰减是不同的 。
这就是选择窗函数的依据 。 MATLAB可调用的窗函数有:
boxcar(N),bartlett(N),hanning(N),blackman(N),
kaiser(N,β ),Hamming(N)等
其调用格式如下:
b=fir1(N,wn,'ftype',window)
功能:实现加窗线性相位 FIR数字滤波器设计, 可设计出标
准的低通, 高通, 带通, 带阻滤波器 。 其中, b为滤波器
系数, N为采样点数, wn为截止频率, 必须以 0开始, 以
Fs/2( 用归一化频率时为 1) 结束, Fs为采样频率, 省略
时默认为 2Hz。 ftype用 于指定滤波器类型, 可缺省 。
window指定窗函数, 可缺省 ( 默认为 Hamming) 。
(2)等波纹最佳一致逼近法 (也称 Chebyshev逼近 )
等波纹最佳一致逼近法是根据设计要求, 导出一组条件,
使整个逼近频率区域 ( 通带或阻带 ) 上逼近误差绝对
值的最大值为最小 。
按这种准则设计的滤波器其通带和阻带内呈现等波纹幅
度特性 。
MATLAB采用 remez算法实现线性相位 FIR数字滤波器的等
波纹最佳一致逼近设计 。 与其他设计法相比, 其优点
是, 设计指标相同时, 使滤波器阶数最低, 或阶数相
同时, 使通带最平坦, 阻带最小衰减最大;通带和阻
带均为等波纹形式, 最适合设计片段常数特性的滤波
器 。
MATLA Bremez算法用格式为:
b=remez(N,f,m,w,'ftype')
其中, w是加权向量, w值越大逼近精度越高,
ftype用于指定滤波器类型, w和 ftype可缺省 。
b为滤波器系数向量, N为采样点数, f为幅频
特性频率点向量, m为幅频特性幅度值向量 。
MATLAB提供 remezord函数用于估其 FIR数字滤波器的等波纹
最佳一致逼近设计的最低阶数 N,从而位滤波器在满足指
标的前提下造价最低 。 基本调用格式:
[N,fo,mo,w]=remezord(f,m,dev,Fs)
其返回参数 [N,fo,mo,w]供 remez函数直接使用。设计的滤
波器可以满足由参数 f,m,dev和 Fs指定的指标。 f和 m与
remez中所用的类似,m为幅频特性幅度值向量,f为幅频
特性频率点向量,是模拟频率或归一化数字频率,必须
以 0开始,以 Fs/2( 用归一化频率时为 1)结束,Fs为采
样频率,省略时默认为 2Hz。
dev为各逼近频段允许的幅频响应偏差 (波纹振幅 ),
remez函数可直接调用 remezord返回的参数, 使用格式:
b=remez(N,fo,mo,w)
exp07_15.m
用各种窗函数分别设计 FIR低通, 高通, 带通, 带阻滤
波器, 参数分别为:
低通:滤波器阶次 N=21,截止频率 wn=0.35
高通:滤波器阶次 N=21,截止频率 wn=0.65
带通:滤波器阶次 N=21,通带频率 0.35<w<0.65
带阻:滤波器阶次 N=21,阻带频率 wn<0.35,wn>0.65
exp07_16.m
用 remez函数设计 FIR低通滤波器
设计滤波器, 使逼近低通滤波特性 |Hd(ejω)|。
要求通带纹波 Rp≤ 3dB,阻带衰减 Rs≥ 60dB,并用最小
阶数实现 。 绘制设计的 FIR数字滤波幅频特性曲线, 检验
设计指标 。
??
?
??
???
???
???
16/50
4/01)( j
d eH
2,无限长单位脉冲响应 ( IIR) 数字滤波器设计
IIR数字滤波器具有无限长脉冲响应, 因而与模拟
滤波器相匹配 。 设计 IIR数字滤波器有两种方法 。
第一种方法先设计模拟低通滤波器, 然后通过频
带变换而成为其它频带选择滤波器 ( 带通, 高通
等 ), 最后通过滤波器变换而得到数字域的 IIR
滤波器 。 第二种方法先设计模拟低通滤波器, 然
后通过滤波器变换而得到数字域的低通滤波器,
最后通过频带变换而得到期望的 IIR滤波器 。 一
般采用第一种方法 。
exp07_17.m
低通 Butterworth模拟滤波器的设计
设计一个低通 Butterworth模拟滤波器, 指
标如下:
通带截止频率,fp=3400Hz
通带最大衰减,Rp=3dB
阻带截止频率,fs=4000Hz
阻带最小衰减,Rs=40dB
exp07_18.m
低通 ChebyshevII型滤波器的设计
设计一个低通 ChebyshevII型数字滤波器, 指标如下:
通带截止频率,ωp=0.2π ; 通带最大衰减,Rp=1dB
阻带截止频率,ωs==0.4π ; 阻带最小衰减,Rs=80dB
? 解:
MATLAB函数 cheby1()可设计低通, 高通, 带通, 带阻的
数字和模拟 ChebyshevI型滤波器, 其通带为等波纹,
阻带内为单调下降 。 函数 cheby2()可设计 ChebyshevII
型滤波器, 其通带为单调下降, 阻带内为等波纹 。 阶
数相同时, ChebyshevI型滤波器过渡带比 ChebyshevII
型窄, 但其代价是在通带内波纹较大 。
7.3 MATLAB辅助神经网络分析与设计
利用 MATLAB辅助人工智能方法分析与设计,如人工
神经网络,可以克服传统人工智能方法对于直觉,
如模式、语音识别、非结构化信息处理方面的缺
陷,能解决许多以前用传统方法无法解决的问题。
神经网络在很多领域中都有应用,以实现各种复
杂的功能。这些领域包括商业及经济估算、自动
检测和监视、计算机视觉、语音处理、机器人及
自动控制、优化问题、航空航天、银行金融业、
工业生产等。
使用神经网络的主要优点:
? 能够自适应样本数据,当数据中有噪声、形变和非线性
时,它也能够正常地工作:
? 容易继承现有的领域知识;
? 使用灵活,能够处理来自多个资源和决策系统的数据;
? 提供简单工具进行自动特征选取,产生有用的数据表示,
可作为专家系统的前端 (预处理器 )。
? 此外,神经网络还能提供十分快的优化过程,尤其以硬
件直接实现网络时,还可以加速联机应用程序的运行速
度。
? 当然,过分夸大神经网络的应用能力也是不恰当的,毕
竟它不是无所不能的。这就需要在实际工作中具体分析
问题,合理选择。
? MATLAB对应的神经网络工具箱包括了很多现有的神经网
络模型:
感知器模型
线性滤波器
BP网络
控制系统网络模型
径向基网络
自组织网络
反馈网络
自适应滤波和自适应训练
? MATLAB神经网络工具箱提供了许多经典算法, 使用它能
够快速地实现对实际问题的建模求解 。
?这种自适应学习的线性网络可以用于监控系统中, 当它跟
踪的信号可能引起不稳定时, 系统就会发出报警信号 。
?自适应学习线性网络模型的另一个应用则基于其能够对一
个非线性系统进行逼近, 并找到稳定的解, 使得结果的误
差平方和最小 。 当非线性系统在一个给定的点上稳定地进
行运行的时候, 自适应学习线性网络模型能够非常精确地
对它进行逼近 。 如果非线性系统跳到另一个点上运行, 则
自适应学习线性网络模型的工作点也能够随之改变, 并且
跟踪到相应的新的工作点 。
一, 在自适应预测中的应用 ( exp07_19.m)
预测一个时变信号序列 。 需要预测的信号是一个持续时间
为 6秒的信号 。 在前 4秒信号的采样频率为 20Hz,从第 4秒到
第 6秒, 信号的采样频率为 40Hz。
需注意的是, 采样速率必须足够快, 使得自适应线性网
络模型能够在最短的时间里保持与非线性系统在当前
工作点上是一致的 。 但是, 自适应线性网络模型还是
要花一定的时间, 用以得到关于非线性系统的足够多
的信息, 从而实现自适应的学习 。 为了将这个学习时
间尽量减少, 可以在非线性系统的输入信号上加上少
量的噪声 。 这样做使得非线性系统在一个很短的时间
里能够动态地增加更多的运行点, 从而使得自适应线
性网络能够更学习得更快 。 当然, 噪声要足够地小,
使得其被加上以后不会影响系统的正常使用,
二, 在线性系统辨识中的应用
当实际系统是一个线性系统或接近线性系统时, 利用
MATLAB函数可对实际系统建立模型 。
exp07_20.m
对实际系统进行辨识, 建立模型
对于一个线性系统, 假设其对输入信号进行线性放大后输
出, 其线性变换关系为
y=kx+b
其中, x为输入, k为放大倍数, b为平移量, y为输出 。
假设信号持续时间 5秒,采样间隔 25毫秒。
使用线性预测器, 线性系统模型不仅能够用来对线
性系统进行无误差的建模, 还可对一个线性系统
进行自适应辨识 。 网络能够随着被辨识的模型的
变化而相应地变化, 从而实现对它的自适应辨识 。
exp07_21.m
对实际系统进行辨识, 建立模型
给定一个信号 X,假设信号持续时间 6秒, 采样频率
为每秒 200次 。
结论
系统的自适应线性神经网络可以被用于保持大量的信息 。
例如, 自适应模型能够被用来在给定的时间里得到实际
系统的特征 。 又如, 自适应网络可以用于监控系统中,
当系统的值有可能引起不稳定时, 就发出报警信号 。
自适应线性模型的另一个用途是利用它能够找到一个线性
估计, 对非线性系统行为进行最小平方和误差估计 。
当非线性系统在一个给定的运行点工作时, 自适应线性模
型能够以高精度对它进行逼近 。 而一旦非线性系统转到
了另一个运行点, 自适应线性网络也会相应地转到那个
新的点上工作 。
为了保证线性系统模型对非线性系统在最短的时
间跟踪到当前运行点,采样速率要足够地快。
然而,为了得到非线性系统足够多的信息,以
对其进行合理的建模,网络需要有一个最小的
认知时间。为了尽量减小这个时间,可以对非
线性系统的输入信号加入小量的噪声。这样做
使得非线性系统在一个很短的时间里能够动态
地增加更多的运行点,从而使得自适应线性网
络能够学习得更快。当然,噪声要足够地小,
使得其被加上以后不会影响系统的正常使用。
三, 用于函数逼近
函数逼近可以用于模式识别, 诊断, 非线性系统的建模等 。
由于人工神经网络有很强的映射能力, 可以在函数逼近
方面进行实际应用 。
exp07_22.m
函数逼近 。 假设要逼近的非线性函数为正弦函数, 其频率
参数可以调节 。
实际使用中, 非线性函数的频率越高, 对网络的要求也越
高 。 相应地, 设置网络隐单元的神经元数目越多, 也就
越能对非线性程度越高的函数进行更好的逼近 。 可以改
变程序中原始非线性函数的频率 k及网络隐单元的神经元
数目 n,观察它们对网络性能的影响 。
7.4 MATLAB辅助模糊系统分析与设计
当前, 模糊逻辑已经被广泛用于生产和生活的各种领域,
特别是在工业控制和自动化领域 。 相对于精确逻辑, 模
糊逻辑在工程应用中有以下主要特点:
( 1) 模糊逻辑是柔性的 。 对于给定的系统, 很容易处理
以及直接增加新的功能, 不需要从头作起 。
( 2) 模糊逻辑建立在自然语言的基础上, 对数据的精确性
要求不高 。 模糊逻辑是建立在人类交流的基础上, 针对
数据的不精确性所提比的一种方法 。 系统的数据主要来
自语言描述的知识, 而不确定性是语言信息的一个重要
特点 。
( 3) 模糊逻辑能充分利用专家信息 。 相比于神经网络,
模糊逻辑建立在已经熟悉相关系统的专家基础上,
能够充分利用现有的专家知识 。
( 4) 模糊逻辑易与传统的控制技术相结合 。 模糊系统
不需要替代传统的控制方法, 很多情况下只是在原
有的控制方法上作简单的修改 。
当然模糊逻辑也不是万能的 。 模糊逻辑是一种将输入
空间映射到输出空间的有效方法 。 如果这种映射对
于解决问题并没有效果, 就应当试试其他的方法 。
例如, 目前很多工业控制器在没有使用模糊逻辑时,
就已经很好用了 。 但是, 当熟悉了模糊逻辑, 就会
发现它在快速有效处理不精确或非线性问题时, 是
非常好的工具 。
模糊逻辑工具箱是数字计算机环境下的函数集成体, 可
以利用它所提供的工具在 MATLAB框架下设计, 建立
以及测试模糊推理系统, 结合 Simulink,还可以对模
糊系统进行模拟仿真, 也可以编写独立的 c语言程序来
调用 MATLAB中所设计的模糊系统 。 对于一些简单的
应用, MATLAB模糊逻辑工具箱提供了图形用户界面
帮助使用者方便, 快速地完成工作 。
在最新的 MATLAB6,X版本中模糊逻辑工具箱提供三种
类型的工具:命令行函数、图形交互工具( GUI)以
及仿真模块 ( Simulink)和示例。下面通过一个典型
的例子来说明模糊逻辑的作用。
exp07_23.m
小费问题
对于小费问题, 现在只考虑关键因素, 把问题简化, 的出
下面三条规则:
( 1) 当服务差或食物差时, 小费少;
( 2) 当服务好时, 小费中;
( 3) 当服务很好或食物好时, 小费高 。
一, 基本模糊推理系统编辑器
通过 MATLAB模糊工具箱的图形界面可视化工具来设计 。
通常可视化工具来设计要方便简单并且直观 。
在 MATLAB命令窗口执行 fuzzy命令即可激活基本模糊推理
系统编辑器。
1,文件 (File)菜单
New Mamdani FIS,新建 Mamdani型模糊推理系统
New Sugeno FIS,新建 Sugeno型模糊推理系统
Open FIS from disk,从磁盘打开一个模糊推理系统文件
Save to disk,将当前的模糊推理系统保存到磁盘文件中
Save to disk as,将当前的模糊推理系统另存为一个文件
Open FIS from Workspace,从工作空间加载模糊推理系统
Save to Workspace,保存到工作空间;
Save to Workspace as,另存到某一模糊推理系统矩阵中
Print,打印模糊推理系统的信息
Close window,关闭窗口
2,编辑 ( Edit) 菜单
Add input,添加输入语言变量;
Add output,添加输出语言变量:
Remove variable,删除语言变量。
3,视图 (View)菜单
Edit FISP roperties,修改模糊推理系统的特性;
Edit membership functions,打开隶属度函数编辑器;
Edit Rules,打开模糊规则编辑器;
View Rules,打开模糊规则浏览器;
view surface,打开模糊系统输入输出特性浏览器。
二, 隶属度函数编辑器 (mfedit)
在命令窗口键入 mfedit或在基本模糊推理系统编辑器中选
择编辑隶属度函数菜单, 都可以激活隶属度函数编辑器 。
该编辑器提供了对输入输出语言变量各语言值的隶属度
函数类型, 参数进行编辑与修改的图形界面工具 。
编辑菜单的功能包括;
Add MFs…, 添加系统提供的模糊隶属度函数;
Add Custom MF…, 添加用户自定义的模糊隶属度函数用
户编写的,m函数 );
Remove Current MF,删除当前编辑的隶属度函数;
Remove All MF,删除当前变量所有的隶属度函数;
三, 模糊规则编辑器 (Ruleedit)
在命令窗口键入 ruleedit或在基本模糊推理系统编辑器中
选择编辑模糊规则菜单, 都可以激活模糊规则编辑器 。
该编辑器提供了添加, 修改和删除模糊规则的图形界
面 。 在模糊推理系统编辑器菜单中选择 [View],[Edit
Rules… ]或双击 FIS Edit界面中间白色的模糊规则图标 。
在模糊规则编辑器中提供了一个文本编辑窗口, 用于规
则的输入和修改 。 模糊规则的形式可以有三种, 即语
言型 ( Verbose), 符 号 型 ( Simbolic), 索 引 型
( Indexed) 。 在窗口的下部有一个下拉列表框, 供用
户选择 。
四, 模糊规则观察器 (Ruleview)
在命令窗口键入 Ruleview或在基本模糊推理系统编辑器
中选择相应菜单, 都可以激活模糊规则浏览器 。 模糊
规则浏览器中, 以图形形式描述了模糊推理系统的推
理过程, 可以在窗口中改变系统输入的数值来观察模
糊逻辑推理系统的输出情况 。
五, 模糊推理输入输出曲面视图 (Surfview)
在命令窗口键入 Surfview或在基本模糊推理系统编辑器
中选择相应菜单, 即可打开模糊推理输入输出曲面视
图窗口 。 该窗口以图形形式显示了模糊推理系统的输
入输出特性曲面 。 在窗口内或用菜单选项改变相应参
数可查看不同性质的图象 。
谢谢您的认真听课
祝同学们:
学习进步
学以致用
考试时间
初步定于 2004年 4月 20号