MATLAB在信号处理中的应用

更新时间:2023-04-22 03:40:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第 4 章 MATLAB在信号处理中的应用

第4章 MATLAB在信号处理中的应用4.1 信号及其表示

4.2 信号的基本运算4.3 信号的能量和功率 4.4 线性时不变系统 4.5 线性时不变系统的响应 4.6 线性时不变系统的频率响应

4.7 傅里叶(Fourier)变换4.8 IIR数字滤波器的设计方法 4.9 FIR数字滤波器设计

x

p

i

x p i

p

第 4 章 MATLAB在信号处理中的应用

4.14.1.1连续时间信号的表示

信号及其表示

连续时间信号:时间变化连续。如y=x(t) 离散时间信号(序列):时间离散,如x(nT)=x(t)|t=nT.

4.1.2工具箱中的信号产生函数函数名 sawtooth square sinc chirp gauspuls vco 功能 产生锯齿波或三角波信号 产生方波信号 产生sinc函数波形 产生调频余弦信号 产生高斯正弦脉冲信号 电压控制振荡器 函数名 pulstran rectpule tripuls diric gmonopuls 产生冲激串 产生非周期的方波信号 产生非周期的三角波信号 产生Dirichlet或周期sinc函数 产生高斯单脉冲信号 功能

第 4 章 MATLAB在信号处理中的应用

4.1.3离散时间信号的表示在MATLAB中,离散时间信号x(n)的表示:需用一个向量x表示序列幅 值,用另一个等长的定位时间变量n,才能完整地表示一个序列。 [例4-10] 绘制离散时间信号的棒状图。其中x(-1)=-1, x(0)=1, x(1)=2, x(2)=1, x(3)=0, x(4)=-1。MATLAB源程序为: n=-3:5; %定位时间变量 x=[0,0,-1,1,2,1,-1,0,0]; stem(n,x); grid; % 绘制棒状图 line([-3,5],[0,0]); %画x轴线 xlabel('n'); ylabel('x[n]') 运行结果如图4.11所示。

图 4.11 离散时间信号图形

名门棋牌官网 1PK1棋牌公社官网 编辑整理

第 4 章 MATLAB在信号处理中的应用

4.1.4几种常用离散时间信号的表示1.单位脉冲序列 1 (n n0 ) 0 n n0 n n0

直接实现:x=zeros(1,N); x(1,n0)=1; 2.单位阶跃序列 1 u (n n0 ) 0 n n0 n n0

直接实现:n=[ns:nf]; x=[(n-n0)>=0];

第 4 章 MATLAB在信号处理中的应用3.实指数序列

x(n) a n

n

a R

直接实现:n=[ns:nf]; x=a.^n; 4.复指数序列

x(n) e( j ) n直接实现:n=[ns:nf]; x=exp((sigema+jw)*n); 5.正(余)弦序列

x(n) cos( n )直接实现:n=[ns:nf]; x=cos(w*n+sita);

第 4 章 MATLAB在信号处理中的应用

4.2 信号的基本运算4.2.1信号的相加与相乘y(n)=x1(n)+x2(n) y(n)=x1(n)×x2(n) MATLAB实现:y=x1+x2; y=x1.*x2

4.2.2序列移位与周期延拓运算序列移位:y(n)=x(n-m)。MATLAB实现:y=x; ny=nx-m 序列周期延拓:y(n)=x((n))M,MATLAB实现:ny=nxs:nxf;y=x(mod(ny,M)+1)

4.2.3 序列翻褶与序列累加运算序列翻褶:y(n)=x(-n)。MATLAB可实现: y=fliplr(x) 序列累加的数学描述为:y ( n) MATLAB实现:y=cumsum(x)i ns

x (i )

n

第 4 章 MATLAB在信号处理中的应用

4.2.4

两序列的卷积运算两序列卷积运算: y(n) x1 (n) x2 (n)

x (m) x (n m)1 2 m

MATLAB实现:y=conv(x1,x2)。序列x1(n)和x2(n)必须长度有限。

4.2.5 两序列的相关运算两序列相关运算: y(m) x1 (n) x2 (n m)。MATLAB实现:y=xcorr(x1,x2)。n

第 4 章 MATLAB在信号处理中的应用

4.3 信号的能量和功率1.信号能量数字定义:

E x[n] x * [n]n 0

N

MATLAB实现: E=sum(x.*conj(x)); 或 E=sum(abs(x).^2);

2. 信号功率数字定义:1 P NN 1 n 0

x[n]

2

MATLAB实现: P=sum(x.*conj(x))/N; 或 E=sum(abs(x).^2)/N;

第 4 章 MATLAB在信号处理中的应用

4.4 线性时不变系统4.4.1 系统的描述1.常系数线性微分/差分方程

y

(N)

(t ) ai y (t ) bi x(i ) (t )(i ) i 0 i 0

N 1

M

2.系统传递函数 连续系统: 离散系统:

Y (s) bM s M bM 1s M 1 b1s b0 H ( s) N X ( s) s aN 1s N 1 a1s a0

Y ( z ) b0 b1 z 1 bM z M H ( z) X ( z ) a0 a1 z 1 a M z NH ( s) k ( s q1 )( s q2 ) ( s qM ) ( s p1 )( s p2 ) ( s pN )

3.零-极点增益模型 连续系统: 离散系统:

H ( z) k

( z q1 )( z q2 ) ( z qM ) ( z p1 )( z p2 ) ( z pN )

第 4 章 MATLAB在信号处理中的应用4.极点留数模型 连续系统: 离散系统:H ( s) r r1 r 2 N s p1 s p2 s pN

H ( z)

rN r1 r2 1 p1 z 1 1 p 2 z 1 1 p N z 1

5.二次分式模型 连续系统: 离散系统: 6.状态空间模型 连续系统: 离散系统:

b0k b1k s b2k s 2 H ( s) g 2 k 1 1 a1k s a2 k sL

b0 k b1k z 1 b2 k z 2 H ( z) g 1 a2k z 2 k 1 1 a1k zL

x' Ax Bu y Cx Du

x[n 1] A x[n] B u[n] y[n] C x[n] D u[n]

第 4 章 MATLAB在信号处理中的应用

4.4.2 系统模型的转换函数在MATLAB中,用sos、ss、tf、zp分别表示二次分式模型、状态空间 模型、传递函数模型和零-极点增益模型。其中sos表示二次分式,g为比 例系数,sos为L×6的矩阵,即

b01 sos b0 L

b11 b1L

b21 1 a11 b2 L 1 a1L

a21 a2 L

(4-15)

1.ss2tf函数 格式:[num, den]=ss2tf(A,B,C,D,iu) 功能:将指定输入量iu的线性系统(A,B,C,D)转换为传递函数模型[num,den]。 2.zp2tf函数 格式:[num,den]=zp2tf(z,p,k) 功能:将给定系统的零-极点增益模型转换为传递函数模型,z、p、k分别为零 点列向量、极点列向量和增益系数。

第 4 章 MATLAB在信号处理中的应用

线性系统模型的变换函数函数名 功能说明 函数名 功能说明

ss2tfss2zp

状态

空间模型转换为传 递函数模型状态空间模型转换为零 -极点增益模型

zp2tfzp2ss

零-极点增益模型转换为传递 函数模型零-极点增益模型转换为状态 空间模型

ss2sostf2ss

状态空间模型转换为二 次分式模型传递函数模型转换为状 态空间模型

zp2sossos2tf

零-极点增益模型转换为二次 分式模型二次分式模型转换为传递函数 模型

tf2zptf2sos

传递函数模型转换为零 -极点增益模型传递函数模型转换为二 次分式模型

sos2zpsos2ss

二次分式模型转换为零-极点 增益模型二次分式模型转换为状态空间 模型

第 4 章 MATLAB在信号处理中的应用[例4-18] 求离散时间系统2 3z 1 H ( z) 1 0.4z 1 z 2

的零、极点向量和增益系数。 在命令窗口输入: >> num=[2,3]; den=[1,0.4,1]; >> [num,den]=eqtflength(num,den); >> [z,p,k]=tf2zp(num,den) 屏幕显示为 z= 0 -1.5000 p = -0.2000 + 0.9798i -0.2000 - 0.9798i k= 2

%使长度相等

第 4 章 MATLAB在信号处理中的应用

4.4.3 系统互联与系统结构 1. 系统的级联

MATLAB实现函数series( ) 格式:[A,B,C,D]=series(A1,B1,C1,D1,A2,B2,C2,D2) 或 [num,den]=series(num1,den1,num2,den2) 将系统1、系统2级联,可得到级联连接的传递函数形式为:H ( s) num(s) num (s)num2(s) 1 H 1 ( s) H 2 ( s ) den(s) den1(s)den2(s)

第 4 章 MATLAB在信号处理中的应用

2. 系统的并联

MATLAB实现函数parallel( ) 格式:[A,B,C,D]=parallel(A1,B1,C1,D1,A2,B2,C2,D2) 或 [num,den]=parallel(num1,den1,num2,den2) 将系统1、系统2并联,可得到并联连接的传递函数形式为:H ( s) num(s) num (s)den2(s) num2(s)den1(s) 1 H 1 ( s) H 2 ( s) den(s) den1(s)den2(s)

3. 两个系统的反馈连接

函数feedback 格式:[A,B,C,D]=feedback(A1,B1,C1,D1,A2,B2,C2,D2,sign) 或 [num,den]=feedback(num1,den1,num2,den2,sign) 将系统1和系统2进行反馈连接,sign表示反馈方式(默认值为-1); 当sig=+1时表示正反馈;当sig=-1时表示负反馈。

第 4 章 MATLAB在信号处理中的应用[例4-19] 求两个单输入单输出子系统

2 s 2 的级联、并联和反馈后系统的传递函数。MATLAB源程序为: num1=1; den1=[1,1]; %系统1 num2=2; den2=[1,2]; %系统2 [nums,dens]=series(num1,den1,num2,den2) %实现两个系统级联 [nump,denp]=parallel(num1,den1,num2,den2) %实现两个系统并联 [numf,denf]=feedback(num1,den1,num2,den2) %实现两个系统反馈 程序运行结果为: nums = 0 0 2 ; dens = 1 3 2 nump = 0 3 4 ; denp = 1 3 2 numf = 0 1 2 ; denf = 1 3 4 因此,各系统的传递函数分别为:1 H 1 ( s) s 1

H 2 ( s)

2 s 2 3s 2

3s 4 s 2 3s 2

s 2 s 2 3s 2

第 4 章 MATLAB在信号处理中的应用

4.5 线性时不变系统的响应4.5.1 线性时不变系统的时域响应1.连续LTI系统的响应

y(t ) T x(t ) x(t

) * h(t ) x( )h(t )d

用MATLAB中的卷积函数conv( )来实现。 2.离散LTI系统的响应y(n) x(n) h(n) m

x(m)h(n m)

用MATLAB中的卷积函数conv( )来实现。

第 4 章 MATLAB在信号处理中的应用3.时域响应函数 (1)对任意输入的连续LTI系统响应函数lsim( ) 格式:[y,x]=lsim(a,b,c,d,u,t) 功能:返回连续LTI系统 x '(t ) a x(t ) b u(t ) y(t ) c x(t ) d u(t ) 对任意输入时系统的输出响应y和状态记录x,其中u给出每个输入的时序列,一般 情况下u为一个矩阵;t用于指定仿真的时间轴,它应为等间隔。 (2)对任意输入的离散LTI系统响应函数dlsim( ) 格式:[y,x]=dlsim(a,b,c,d,u) 功能:返回离散LTI系统 x[n 1] ax[n] bu[n] y[n] cx[n] du[n] 对输入序列u的响应y和状态记录x。

第 4 章 MATLAB在信号处理中的应用

4.5.2 LTI系统的单位冲激响应1. 求连续LTI系统的单位冲激响应函数impulse( ) 格式:[Y,T] = impulse(sys) 或impulse(sys)

功能:返回系统的响应Y和时间向量T,自动选择仿真的时间范围。其中sys可为系统传递函数、零极增益模型或状态空间模型。 2. 求离散系统的单位冲激响应函数dimpulse( ) 格式:[y,x]=dimpulse(num,den) 功能:返回项式传递函数

g ( z ) num( z ) / den( z )的单位冲激响应y向量和时间状态历史记录x向量。

本文来源:https://www.bwwdw.com/article/31fq.html

Top