文档库 最新最全的文档下载
当前位置:文档库 › 数字信号处理基本知识点Matlab实现

数字信号处理基本知识点Matlab实现

数字信号处理基本知识点Matlab实现
数字信号处理基本知识点Matlab实现

数字信号处理(第二版)

绪论

1.4 MATLAB 在信号处理中的应用简介

MATLAB 是美国Mathworks 公司于1984年推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理、系统仿真和图形显示于一体,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作。

MATLAB 软件包括五大通用功能:数值计算功能(Numeric ),符号运算功能(Symbolic );数据可视化功能(Graphic ),数据图形文字统一处理功能(Notebook )和建模仿真可视化功能(Simulink )。该软件有三大特点:一是功能强大;二是界面友善、语言自然;三是开放性强。目前,Mathworks 公司已推出30多个应用工具箱。MA TLAB 在线性代数、矩阵分析、数值及优化、数理统计和随机信号分析、电路与系统、系统动力学、信号和图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通信系统、以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。

2.10 离散时间信号与系统的Matlab 表示 2.10.1 离散时间信号的表示和运算

1、基本序列的Matlab 表示 单位采样序列

在MA TLAB 中,单位采样序列可以通过编写以下的DTimpulse .m 文件来实现,即

function y=DTimpulse (n)

y=(n==0); %当参数为0时冲激为1,否则为0 调用该函数时n 必须为整数或整数向量。 单位阶跃序列

在MA TLAB 中,单位阶跃序列可以通过编写DTu .m 文件来实现,即

function y=DTu (n)

y=n>=0; %当参数为非负时输出1 调用该函数时n 必须为整数或整数向量。 矩形序列

用MA TLAB 表示矩形序列可根据公式()()()N R n u n u n N =--并利用DTu 函数生成,即 function y=DTR(n,N)

y=DTu(n)-DTu(n-N);

调用该函数时n 必须为整数或整数向量,N 必须为整数。 实指数序列

用MA TLAB 表示实指数序列()(),n

x n a u n n N a R =∈∈,即

n=0:N-1; x=a.^n;

复指数序列

用MA TLAB 表示实指数序列0()0(),,j n

x n e

n N R σωσω+=∈∈,即

n=0:N-1;

x=exp((sigma+j*w0)*n);

正弦序列

用MA TLAB 表示实指数序列00()sin(),,,x n A n n N A R ω?ω?=+∈∈,即

n=0:N-1;

x=A*sin(w0*n+phi);

2、基本序列运算的Matlab 表示 序列相加

用MA TLAB 实现序列12()()()y n x n x n =+,即

y=x1+x2;

当x1和x2序列长度不等或其起始位置不对应时,序列相加前需要调整x1和x2,使之具有相同长度并具有相同起始位置。 序列相乘

用MA TLAB 实现序列12()()*()y n x n x n =,即

y=x1.*x2;

当x1和x2序列长度不等或其起始位置不对应时,序列相乘前需要调整x1和x2,使之具有相同长度并具有相同起始位置。此处需要利用Matlab 中的点乘(.*)实现。 序列反转

用MA TLAB 实现序列()()y n x n =-,即

y=flipr(x);

序列移位

用MA TLAB 实现序列0()()y n x n n =-,即

n=-N:N; n1=n-n0;

subplot(211);stem(n,x,’ fill ’); subplot(211);stem(n1,x,’ fill ’);

2.10.2 离散时间信号的频域变换

1、Matlab 实现离散时间傅里叶变换(DTFT )

1

()()N j j n n X e x n e ω

ω--==∑

序列的离散时间傅里叶变换(DTFT )由于频率为连续实数变量,所以严格的讲其在

Matlab 下是无法实现的,但是为了说明DTFT 在Matlab 下的运算过程,这里将其频率变量设置为频率向量[]0121M ωωωωω-=

只计算频率向量指定的有限个频率点上的频谱结果。

[](0)(1)(1)x x x x N

=- ,[]0121n N =-

[]0121M ωωωωω-=

,则DTFT 的矩阵表达形式为:

[]0

110110110110

01

1

1(1)(1)

(1)()()()(0)(1)(1)M M M M j j j j j j j j j j N j N j N X e X e X e e e e e

e e x x x N e

e e ωωωωωωωωωωωω----------------???

?

??

??

?

?=-??????

其中:

[]011011012101100001111()2(1)(1)(1)1M M M M j j j j j j j j N j N j N N ωωωωωωωωωωωωω----??

---????

????---????=-????????------????-??

DTFT 在Matlab 中可以利用矩阵乘法的形式表示如下:

exp ()T X x j n ω??=?-????

【例2-1】 用Matlab 实现5()()x n R n =的离散时间傅里叶变换。 解:DTFT 的MA TLAB 源程序为:

N=5;

n=[0:N-1]; k=-200:200;

w=(4*2*pi/400)*k; x= DTR(n,N)

DTFT_X=x*exp(-j*(n'*w)); magX=abs(DTFT_X); plot(w/pi,magX); xlabel('w/pi'); ylabel('|X(jw)|');

title('x(n)的离散时间傅里叶变换的幅频响应曲线');

图 2-1 离散时间傅里叶变换幅度响应曲线

2、Matlab 实现Z 变换

Z 正反变换的符号表示

MATLAB 符号数学工具箱提供了计算离散时间信号单边Z 变换的函数ztrans 和Z 反变换函数iztrans ,其语句格式分别为

z=ztrans(x) x=iztrans(z)

上式中的x 和z 分别为时域表达式和z 域表达式的符号表示,可通过sym 函数来定义。

【例2-2】 试用ztrans 函数求下列函数的z 变换。

(1))()cos()(n u n a n x n

π=; (2))(])2(2[)(11

n u n x n n ----=。

解:(1)Z 变换MATLAB 源程序为

x=sym('a^n*cos(pi*n)'); Z=ztrans(x); simplify(Z) ans=

z/(z+a)

(2)Z 变换MATLAB 源程序为

x=sym('2^(n-1)-(-2)^(n-1)'); Z=ztrans(x); simplify(Z) ans=

z^2/(z-2)/(z+2)

【例2-3】 试用iztrans 函数求下列函数的Z 反变换。

(1)65198)(2+--=z z z z X (2)3

2)2)(1()12112()(--+-=z z z z z z X

解:(1)Z 反变换MA TLAB 源程序为

Z=sym('(8*z-19)/(z^2-5*z+6)'); x=iztrans(Z);

ans=

-19/6*charfcn[0](n)+5*3^(n-1)+3*2^(n-1)

其中,charfcn[0](n)是)(n δ函数在MA TLAB 符号工具箱中的表示,反变换后的函数形式为

)()2335()(6

19

)(11n u n n x n n --?+?+-

=δ。 (2)Z 反变换MA TLAB 源程序为

Z=sym('z*(2*z^2-11*z+12)/(z-1)/(z-2)^3'); x=iztrans(Z); simplify(x) ans=

-3+3*2^n-1/4*2^n*n-1/4*2^n*n^2

其函数形式为)()24

1241233()(2n u n n n x n

n n

--

?+-=。 Z 反变换的留数表示

如果信号的z 域表示式)(z X 是有理函数,进行z 反变换的另一个方法是对)(z X 进行部分分式展开,然后求各简单分式的z 反变换。设)(z X 的有理分式表示为

)()

(1)(221122110z A z B z

a z a z a z

b z b z b b z X n

n m m =++++++++=------ (4-3) MATLAB 信号处理工具箱提供了一个对)(z X 进行部分分式展开的函数residuez ,其语句格式为

[R,P,K]=residuez(B,A)

其中,B ,A 分别表示)(z X 的分子与分母多项式的系数向量;R 为部分分式的系数向量;P 为极点向量;K 为多项式的系数。若)(z X 为有理真分式,则K 为零。

【例2-4】 试用MA TLAB 命令对函数3

21431818)(-----+=z z z z X 进行部分分式展

开,并求出其Z 反变换。

解:MATLAB 源程序为

B=[18]; A=[18,3,-4,-1]; [R,P,K]=residuez(B,A) R= 0.3600 0.2400 0.4000 P= 0.5000

-0.3333 K= []

从运行结果可知,32p p =,表示系统有一个二重极点。所以,)(z X 的部分分式展开为

2

111)3330.314.03333.0124.05.0136.0)(---++

++-=

z z z z X ( 因此,其Z 反变换为

)(])3333.0)(1(4.0)3333.0(24.0)5.0(36.0[)(n u n n x n n n -++-?+?=

Z 变换的零极点分析

离散时间系统的系统函数定义为系统零状态响应的Z 变换与激励的Z 变换之比,即

)

()

()(z X z Y z H =

(4-4) 如果系统函数)(z H 的有理函数表示式为

1

1

211

121)(+-+-++++++++=n n n n m m m m a z a z a z a b z b z b z b z H (4-5) 那么,在MATLAB 中系统函数的零极点就可通过函数roots 得到,也可借助函数tf2zp 得到,tf2zp 的语句格式为

[Z,P,K]=tf2zp(B,A) 其中,B 与A 分别表示)(z H 的分子与分母多项式的系数向量。它的作用是将)(z H 的有理分式表示式转换为零极点增益形式,即

)

())(()

())(()(2121n m p z p z p z z z z z z z k

z H ------= (4-6)

若要获得系统函数)(z H 的零极点分布图,可直接应用zplane 函数,其语句格式为

zplane(B,A)

其中,B 与A 分别表示)(z H 的分子和分母多项式的系数向量。它的作用是在Z 平面上画出单位圆、零点与极点。

【例2-5】 已知某离散因果LTI 系统的系统函数为

16

.032

.0)(2+++=

z z z z H

试用MATLAB 命令求该系统的零极点并绘制其零极点分布图。

解:用tf2zp 函数求系统的零极点,MATLAB 源程序为

A=[1,1,0.16]; [R,P,K]=tf2zp(B,A) zplane(B,A),grid on; legend('零点','极点'); title('零极点分布图');

零极点计算结果如下所示。

R= -0.3200 P= -0.8000 -0.2000 K= 1

零极点分布如图2-2所示。可见,该因果系统的极点全部在单位圆内,故系统是稳定的。

图 2-2 系统零极点分布图

2.10.3 离散时间系统的表示

1、离散时间系统的时域表示方法

离散时间LTI 系统在时域中常常可通过线性常系数差分方程和单位脉冲响应两种方式描述。

线性常系数差分方程

∑∑==-=-M

j j

N i i

j n x b i n y a 0

)()(

其中,i a (0=i ,1,…,N )和j b (0=j ,1,…,M )为实常数。

MATLAB 中函数filter 可对差分方程在指定时间范围内的输入序列所产生的响应进行求解。函数filter 的语句格式为

y=filter(b,a,x)

其中,x 为输入的离散序列;y 为输出的离散序列;y 的长度与x 的长度一样;b 与a 分别为差分方程右端与左端的系数向量。

【例2-6】 已知某LTI 系统的差分方程为

)1(2)()2(2)1(4)(3-+=-+--n x n x n y n y n y

用MA TLAB 命令绘出当输入激励信号为)()2/1()(n u n x n =时,该系统的零状态响应。 解:MATLAB 源程序为

a=[3 -4 2]; b=[1 2]; n=0:30; x=(1/2).^n; y=filter(b,a,x); stem(n,y,'fill'),grid on

xlabel('n'),title('系统响应y(n)')

程序运行结果如图2-3所示。

图 2-3 系统零状态响应

单位脉冲响应

系统的单位脉冲响应定义为系统在)(n δ激励下系统的零状态响应,用)(n h 表示。MATLAB 求解单位脉冲响应可利用函数filter ,并将激励设为前面所定义的DTimpulse 函数。例如用filter 函数求解例2-6中系统的单位脉冲响应的MA TLAB 程序为

a=[3 -4 2]; b=[1 2]; n=0:30; x=impDT(n); h=filter(b,a,x); stem(n,h,'fill'),grid on

xlabel('n'),title('利用filter 函数求解的系统单位脉冲响应h(n)')

MATLAB 另一种求单位脉冲响应的方法是利用控制系统工具箱提供的函数impz 来实现。impz 函数的常用语句格式为

impz(b,a,N)

其中,参数N 通常为正整数,代表计算单位脉冲响应的样值个数。例如用impz 函数求解例2-6中系统的单位脉冲响应的MA TLAB 程序为

a=[3 -4 2]; b=[1 2]; n=0:30;

impz(b,a,30),grid on

xlabel('n'),title('利用impz 函数求解的系统单位脉冲响应h(n)')

单位脉冲响应的因果稳定性判断

单位脉冲响应)(n h 作为时域中描述系统的一种方法,可以用它来分析系统的因果性和稳定性。系统的因果性可以直接根据)(n h 满足因果关系的成立条件直接进行判定;系统的稳定性一般不太容易直接检查系统的单位脉冲响应是否满足绝对可和,可行的方法是在系统的输入端加入单位阶跃序列,如果系统的输出趋近一个常数(包括零),就可以判定系统的稳定性。这种判定方式的思想是,如果系统稳定,信号加入系统后,系统输出的开始一段成为暂态响应,随着n 的加大,幅度趋于稳定,达到稳态输出。

【例2-7】设一谐振器的差分方程为

00() 1.8237(1)0.9801(2)()(2)y n y n y n b x n b x n =---+--

其中01

100.49

b =

,谐振器的谐振频率为0.4rad 。试用Matlab 实验方法检查系统是否稳

定?

解:Matlab 源程序为

N=400; b0=1/100.49; n=0:N-1; B=[b0,0,-b0]; A=[1,-1.8237,0.9801]; x=DTu(n); y=filter(B,A,x); subplot(211); stem(n,x,'fill');

title('输入信号-单位阶跃序列u(n)'); axis([0,N,0,1.2]); subplot(212); stem(n,y,'fill');

title('输出信号-u(n)系统响应'); axis([0,N,-0.05,0.05]);

程序执行结果如图2-4所示,可见,当此系统输入单位阶跃序列后,系统的响应呈现出幅值递减状态,可以预见当n →∞时,幅值趋近于一个常数(零常数),故而可以判定此系统稳定。

图2-4 输入单位阶跃序列的系统响应

2、离散时间系统的频域表示方法

离散时间系统的频率响应定义为

)(|)(|)(ω?ωωj j j e e H e H = (-7)

其中,|)(|ωj e H 称为离散时间系统的幅频响应,在Matlab 中利用函数abs 对频率响应进行求解;)(ω?称为离散时间系统的相频响应,在Matlab 中利用函数angle 对频率响应进行求解。由于)(ω

j e

H 是以2π为周期的周期函数,故只需分析)(ωj e H 在一个周期范围内的特

征便可分析出系统的整个频率特性。

MATLAB 为求解离散时间系统频响特性的提供了函数freqz ,调用freqz 的格式主要有两种。

第一种方式为:

[H,w]=freqz(B,A,N) 其中,B 与A 分别表示)(z H 的分子和分母多项式的系数向量;N 为正整数,默认值为512;返回值w 包含],0[π范围内的N 个频率等分点;返回值H 则是离散时间系统频率响应

)(ωj e H 在π~0范围内N 个频率处的值。

第二种方式为:

[H,w]=freqz(B,A,N,’whole ’)

与第一种方式不同之处在于角频率的范围由],0[π扩展到]2,0[π。

【例2-7】 用MATLAB 命令绘制系统8109

.056.19028

.096.0)(22+-+-=z z z z z H 的频率响应曲线。

解: MATLAB 源程序为

b=[1 -0.96 0.9028]; a=[1 -1.56 0.8109];

[H,w]=freqz(b,a,400,'whole'); Hm=abs(H); Hp=angle(H); subplot(211) plot(w,Hm),grid on

xlabel('\omega(rad/s)'),ylabel('Magnitude') title('幅频响应曲线') subplot(212) plot(w,Hp),grid on

xlabel('\omega(rad/s)'),ylabel('Phase') title('相频响应曲线')

程序运行结果如图2-5所示。

图 2-5 系统的频率响应

2.10.4 离散时间系统的输入输出关系

1、 用filter 函数实现系统输出

利用2.10.3节中介绍的filter 函数可以对输入数据进行滤波处理,此函数适用于IIR 和FIR 滤波器。滤波器的z 域表示为

11(1)(2)(1)()()(1)(2)(1)N

M

b b z b N z Y z X z a a z a M z

----+++-=+++- 其中(1)1a =,如果(1)1a ≠,则Matlab 将自动进行归一化处理;如果(1)0a =,则Matlab 会给出出错提示。

filter 函数的调用格式有:

y=filter(b,a,x),此方式利用给定的描述系统的系数向量a 和b ,对输入信号x 中的数据

进行滤波,将结果存入y 输出向量中。

[y,zf]=filter(b,a,x),此方式调用方式与前一个方式基本一致,不同之处在于除了返回滤波处理结果y 向量外,还得到输入信号x 的最终状态向量zf 。

y=filter(b,a,x,zi),此方式调用方式还可以增加对输入信号x 的初始状态的表示,用zi 描述。

2、 用conv 函数实现系统输出

离散时间系统的输出可以利用输入信号和描述系统的单位脉冲响应的线性卷积表示,即

∑∞

-∞

=-=

=m m n h m x n h n x n y )()()(*)()( (3-2)

MATLAB 求离散时间信号线性卷积的命令为conv ,其语句格式为

y=conv(x,h)

其中,x 与h 表示离散时间信号的输入向量和单位脉冲响应向量;y 为输出向量。用MATLAB 进行线性卷积运算时,只能计算信号有限项的卷积,无法实现无限项的卷积。

【例2-8】 已知LTI 系统的单位脉冲响应为()()()[]88.0--=n u n u n h n ,用MA TLAB 求当输入信号为)4()()(--=n u n u n x 时,系统的零状态响应。

解:依题可知,)(n h 向量的长度至少为8,)(n x 向量的长度至少为4,为了使图形显示美观完整,将)(n h 向量和)(n x 向量加上一些附加的零值。MATLAB 源程序为

nx=-1:5; %x(n)向量显示范围(添加了附加的零值) nh=-2:10; %h(n)向量显示范围(添加了附加的零值) x=uDT(nx)-uDT(nx-4);

h=0.8.^nh.*(uDT(nh)-uDT(nh-8)); y=conv(x,h);

ny1=nx(1)+nh(1); %卷积结果起始点

%卷积结果长度为两序列长度之和减1,即0到(length(nx)+length(nh)-2) %因此卷积结果的时间范围是将上述长度加上起始点的偏移值 ny=ny1+(0:(length(nx)+length(nh)-2)); subplot(311)

stem(nx,x,'fill'),grid on xlabel('n'),title('x(n)') axis([-4 16 0 3]) subplot(312)

stem(nh,h','fill'),grid on xlabel('n'),title('h(n)') axis([-4 16 0 3]) subplot(313)

stem(ny,y,'fill'),grid on xlabel('n'),title('y(n)=x(n)*h(n)')

axis([-4 16 0 3])

2.10.5 离散时间系统的网络结构

数字信号处理中一般涉及到的网络结构可分为无限长单位脉冲响应(IIR )网络结构和有限长单位脉冲响应(FIR )网络结构。FIR 网络中一般不存在输出对输入的反馈支路,即其n 时刻的输出只与n 时刻及其附近的输入有关,而与n 时刻附近的输入无关,而IIR 网络与FIR 正好相对,其网络中一般存在反馈支路,并且n 时刻的输出不仅与n 时刻及其附近的输入有关,还与n 时刻附近的输出也相关。不同的系统网络结构实际上代表不同的算法,而算法直接影响了系统的运算误差、运算速度和运算复杂度,因此系统实现过程需要根据具体的应用和技术指标确定选择哪种具体的网络结构。 1、IIR 网络结构

IIR 系统的基本网络结构通常有:直接型、级联型和并联型。 直接型网络

在Matlab 中,直接型结构有分别描述系统函数的分子、分母系数的两个向量B 和A 表示。如果数字滤波器的直接型系统函数关系为:

图2-6 利用conv 函数求解系统的零状态响应

01

()M

i

i

i N

i

i i b z

H z a z

-=-==

∑∑

则向量012[,,]N A a a a a = ,向量012[,,]M B b b a b = 。一般默认01a =,如果01a ≠,需要将0a 转换为1。

Matlab 中,实现IIR 滤波器的直接型可通过调用filter 函数来实现。如果滤波器输入信

号为向量I X ,输出信号向量为O Y ,则(,,)O I Y filter B A X =按照直接型结构实现对I X 的滤波,计算输入信号I X 的零状态响应输出信号O Y 。

级联型网络结构

在Matlab 中,级联型的网络结构可以通过调用tf2sos 函数实现直接型到级联型的转换,同样也可以调用sos2tf 函数实现级联型到直接型的转换。除了tf2sos/sos2tf 函数外,还可以利用tf2zp/zp2tf 函数,两者的区别主要是生成的级联型结构,tf2sos 函数转换实现了二阶级联型结构,而tf2zp 函数转换实现了零极点级联型结构。下面以tf2sos 函数为例说明。

tf2sos 函数调用方式为[,]2(,)S G tf sos B A =,其中向量B ,A 分别表示直接型系统函数的分子、分母多项式系数。当1A =时,表示FIR 滤波器系统函数,否则表示IIR 滤波器系统函数。tf2sos 函数调用返回L 级二阶级联型结构的系数矩阵S 和增益常数G 。

011121112101

0101122201212111L

L

L L

L b b b a a b b b a a S b b b a a ??????=??????

S 为L ×6的矩阵,其中每一行表示一个二阶级联子系统函数的分子、分母系数向量,例如第k 行所对应的二阶子系统函数为:

12

01212

12()[1,]1k k k k k k b b z b z H z k L a z a z

----++=∈++ tf2sos 函数最终输出的级联型结构系统函数为:

12()()()()L H z GH z H z H z =

其中G 表示不为零的增益常数,也可理解为一个系统函数为常数的子系统。 并联型网络结构

在Matlab 中,直接型到并联型的转换目前官方还没有提供转换函数,而《数字信号处理教程――MATLAB 释义与实现》一书中提供的tf2par 函数实现了直接型到并联型转换,并且还提供了par2tf 完成并联型到直接型的转换。

2、FIR 网络结构

FIR 系统的基本网络结构通常有:直接型、级联型、频率采样型和线性相位型。其中直

接型、级联型与IIR 系统的直接型、级联型的实现函数相同,分别是filter 函数和tf2sos 函数,它们的区别主要是系统函数分母多项式系数向量A 是否等于1。如果1A =,则表示FIR 系统,否则表示IIR 系统。 FIR 系统中还有一种易于模块化设计实现的网络结构——格型网络结构,此结构适用于对有限字长效应不敏感的时域离散系统,并且适合递推运算,它在一般的数字滤波器、自适应滤波器、线性预测系统及谱估计中都有广泛的应用。在Matlab 中,直接型到格型网络结构的转换可以通过调用tf2latc 函数实现。由于本书中未涉及格型网络结构,在此仅给出调用的函数名称,具体实现可参考其它资料。

3.5 离散傅里叶变换的Matlab 实现

1、离散傅里叶变换

离散傅立叶变换不仅在理论上有着重要的意义,而且因为其具有快速计算的方法,所以在各种数字信号处理的实际应用中也具有重要的实用意义。

有限长序列)(n x 的离散傅立叶变换(DFT )为

10,)()]([)(1

0-≤≤==∑-=-N n W n x n x DFT k X N n kn

N

逆变换为

10,)(1)]([)(10

-≤≤==∑-=-N n W k X N k X IDFT n x N n kn N

若将DFT 变换的定义写成矩阵形式,则得到x X =A ,其中DFT 变换矩阵A 为

???

???

?=---2)1(111...1...

...

......

...

11 (11)

N N

N N N N N W

W W W A

Matlab 中可借助Dftmtx 函数计算DFT 变换矩阵A 的函数,调用方式如下

(1)A =dftmtx (n ):返回n ×n 的DFT 变换矩阵A 。若x 为给定长度的行向量,则y =x*A ,返回x 的DFT 变换y 。

(2)Ai =conj (dftmtx (n ))/n :返回n ×n 的IDFT 变换矩阵Ai 。

【例3-1】如果)4/sin()8/sin()(ππn n n x +=是一个长度N =16的序列,用MATLAB 求其DFT 的结果,并画出其结果图。 解: Matlab 程序如下 N=16;

n=0:1:N-1; %时域采样 xn=sin(n*pi/8)+sin(n*pi/4);

Yk=dftmtx(N)*xn'; subplot(2,1,1)

stem(n,xn,'fill');title('序列x(n)'); subplot(2,1,2)

stem(k,abs(Yk),'fill');title('序列x(n)的DFT 结果');

图3-1 调用Dftmtx 函数计算DFT

2、离散傅里叶变换的性质

离散傅里叶变换的性质有很多,这里主要针对离散傅里叶变换与其它变换最主要的两个不同特性进行说明,它们分别是圆周移位和圆周卷积。 圆周移位

一个有限长序列)(n x 的圆周移位定义

()()()m N N x x n m R n =+

式中,()()

N

x

n m +表示将)(n x 的周期延拓序列()x

n 的移位N 个单位。 【例3-2】求有限长序列,)4.0(8)(n

n x =200≤≤n 的圆周移位

)()]10[()(2020n R n x n x m +=,并画出其结果图。

解:Matlab 程序如下 N=20; m=10; n=0:1:N-1; x=8*(0.4).^n; n1=mod((n+m),N); xm=x(n1+1);

subplot(2,1,1)

stem(n,x);

title('原始序列');

xlabel('n');

ylabel('x(n)');

subplot(2,1,2)

stem(n,xm);

title('圆周移位后序列');

xlabel('n');

ylabel('x((n+10))mod20');

图3-2 圆周移位前后比较

圆周卷积

MATLAB中构造用于计算圆周卷积的函数circonvt程序如下

function y=circonvt(x1,x2,N)

if(length(x1)>N)

error('N should bigger than or equal to the length of x1!') end

if(length(x2)>N)

error('N should bigger than or equal to the length of x2!') x1=[x1,zeros(1,N-length(x1))]

x2=[x2,zeros(1,N-length(x2))]

m=[0:1:N-1]

for n=1:1:N

end

y=x1*H'

4.7 FFT的Matlab实现

快速傅立叶变换(FFT)并不是与DFT不同的另外一种变换,而是为减少DFT计算次数的一种快速有效的算法。快速傅立叶变换算法形式很多,但是基本上可以分为两大类,即按时间抽取(Decimation-In-Time,简称DIT)法和按频率抽取(Decimation-In-Frequency,简称DIF)法。

MATLAB为计算FFT提供的函数主要有fft、ifft、fft2、ifft2, fftn、ifftn和fftshift、ifftshift 等,其中fft、ifft主要针对1维数据进行处理,而fft2、ifft2, fftn、ifftn主要针对2维或n维数据进行处理。当所处理的数据的长度为2的指数幂时,采用基-2算法进行计算,计算速度会显著提高。所以,要尽可能使所要处理的数据长度为2的指数幂或者用添零的方式来添补数据使之成为2的指数幂。

1、FFT变换和逆变换

FFT变换和逆变换在Matlab中通过调用fft和ifft函数实现,其中FFT函数调用过程有三种情况:

(1)Y=fft(X)

如果X是向量,则采用傅立叶变换来求解X的离散傅立叶变换;

如果X是矩阵,则计算该矩阵每一列的离散傅立叶变换;

维数组,则是对第一个非单元素的维进行离散傅立叶变换;

如果X是(N)D

(2)Y=fft(X,N)

N是进行离散傅立叶变换的X的数据长度,可以通过对X进行补零或截取来实现。

(3)Y=fft(X,[],dim) 或Y=fft(X,N,dim)

在参数dim指定的维上进行离散傅立叶变换;

当X为矩阵时,dim用来指定变换的实施方向:dim=1,表明变换按列进行;dim=2表明变换按行进行。函数ifft的参数应用与函数fft完全相同。

【例4-1】fft在信号分析中的应用,使用频率分析方法从受噪声污染的信号x(t)中鉴别出有用的信号。

解:Matlab程序如下:

t=0:0.001:1; %采样周期为0.001s,即采样频率为1000Hz;

%产生受噪声污染的正县正弦波信号;

x=sin(2*pi*100*t)+sin(2*pi*200*t)+rand(size(t));

subplot(2,1,1)

plot(x(1:50)); %画出时域内的信号;

Y=fft(x,512); %对X进行512点的傅立叶变换;

f=1000*(0:256)/512; %设置频率轴(横轴)坐标,1000为采样频率;

subplot(2,1,2)

plot(f,Y(1:257)); %画出频域内的信号

运行结果

图4-1 时域信号和频域信号的比较

由上面的图4-1可以看出,从受噪声污染信号的时域形式中,很难看出正弦波的成分。但是通过对x(t)作傅立叶变换,把时域信号变换到频域进行分析,可以明显看出信号中100Hz 和200Hz的两个主要频率分量。

2、FFT频率搬移

在Matlab中,FFT变换后默认的频谱图频率成分并不直观,可以通过fftshift和ifftshift 函数进行频率搬移,其中fftshift函数的调用方式为:

Z=fftshift(Y)

此函数可用于将傅立叶变换结果Y(频域数据)中的直流成分(即频率为0处得值)移到频谱的中间位置。当fftshift函数调用参数不同时会有以下三种情况:

如果X是向量,则变换Y的左右两边;

如果X是矩阵,则交换Y的一、三象限和二、四象限;

如果Y 是多维数组,则在数组的每一维交换其“半空间”。 函数ifftshift 的参数应用与

函数fftshift 完全相同。 【例4-2】设序列()2sin(4)5cos(8)x n n n ππ=+,求64N =点的FFT 的幅度谱,并画出其图。

解:Matlab 程序如下: N=64; n=0:N-1; w=2*pi*n/N;

x=2*sin(4*pi*n)+5*cos(8*pi*n); y=fft(x,N); z=fftshift(y); subplot(211); plot(w/pi,abs(y))

title('fft 频谱计算结果') axis([0,2,-10,350]) subplot(212); plot(w/pi,abs(z))

title('fftshift 频谱搬移后结果') axis([0,2,-10,350])

图4-2 FFT 频谱搬移前后比较

使用Matlab需要掌握的一些知识点

1.滤波:medfilt1,smooth,filter,无法解决数据NAN污染周边数据 2.aa([1,3],:) = aa([3,1],:); 可以交换行与行之间的数据 3.用一下整体乘法,提高计算效率 4.2019.10.4纠错:程序进入循环出不来,原因是小循环中的条件计算程 序参数与大循环参数冲突 5.[SNR,I] = min(Data_Ze,[],1,'omitnan'); %排除每一列中的NAN, 求每一列中的最小值,SNR为每列的最小值,I为每列最小值的下标 6.ncdisp()可以充分地体现nc文件的方方面面的信息 7.命令行窗口显示信息: X = ['仰角',num2str(elevtation_number), '下的ML总点数:']; % 命令窗口要显示的信息 disp(X); 8.弹出提示框显示信息 msgbox('中间数据图像显示完毕!','温馨提示','modal'); errordlg('参数超出范围或者参数输入不足,请重新配置!', 'Warning'); 9.在图中标记数据 str=[ num2str(r') 'km']; 显示的文本 text(x,y,cellstr(str)); (x,y)要显示的位置 10.标记图中线条内容 l = legend('温度廓线','露点温度廓线'); %标注线条代表内容 title(l,'线条表示内容'); %线条标题 11.matlab求和取均值以及计算标准差的时 数据有nan使用下面三个特定的函数(nansum,nanmean,nanstd)12.Matlab 简化运算 ZH_Data1=mod((ZH_Data0+33)*2,256)*0.5-33; ZH_Data1(ZH_Data1==-33)=NaN; ZH_Data=ZH_Data1(1:1192,:,1); 13.完成仰角方位距离三维元素位置的转换 permute(ZH_data,[3,2,1]); 14.shading阴影函数 控制曲面和图形对象的颜色着色,即用来处理色彩效果的,包括以下三种形式: shading faceted:默认模式,在曲面或图形对象上叠加黑色的网格线; shading flat:是在shading faceted的基础上去掉图上的网格线;

数字信号处理Matlab实现实例(推荐给学生)

数字信号处理Matlab 实现实例 第1章离散时间信号与系统 例1-1 用MATLAB计算序列{-2 0 1 –1 3}和序列{1 2 0 -1}的离散卷积。 解 MATLAB程序如下: a=[-2 0 1 -1 3]; b=[1 2 0 -1]; c=conv(a,b); M=length(c)-1; n=0:1:M; stem(n,c); xlabel('n'); ylabel('幅度'); 图1.1给出了卷积结果的图形,求得的结果存放在数组c中为:{-2 -4 1 3 1 5 1 -3}。 例1-2 用MATLAB计算差分方程 当输入序列为时的输出结果。 解 MATLAB程序如下: N=41; a=[0.8 -0.44 0.36 0.22]; b=[1 0.7 -0.45 -0.6]; x=[1 zeros(1,N-1)];

k=0:1:N-1; y=filter(a,b,x); stem(k,y) xlabel('n');ylabel('幅度') 图 1.2 给出了该差分方程的前41个样点的输出,即该系统的单位脉冲响应。 例1-3 用MATLAB 计算例1-2差分方程 所对应的系统函数的DTFT 。 解 例1-2差分方程所对应的系统函数为: 123 123 0.80.440.360.02()10.70.450.6z z z H z z z z -------++= +-- 其DTFT 为 23230.80.440.360.02()10.70.450.6j j j j j j j e e e H e e e e ωωωω ωωω--------++= +-- 用MATLAB 计算的程序如下: k=256; num=[0.8 -0.44 0.36 0.02]; den=[1 0.7 -0.45 -0.6]; w=0:pi/k:pi; h=freqz(num,den,w); subplot(2,2,1); plot(w/pi,real(h));grid title('实部') xlabel('\omega/\pi');ylabel('幅度')

MATLAB复习知识点汇总

MATLAB 复习 1、实现符号函数 运算功能的函数m 文件为: function y=sgn(x) if x<0 y1=-1; elseif x==0 y1=0; else y1=1; end y=y1; 2、求满足1+2+3+…n<100的最大正整数n 的MATLAB 程序为: sum=0;n=0; while sum<100 n=n+1; sum=sum+n; end 1,0,sgn()0,0, 1,0x y x x x >?? ===??-

sum=sum-n; n=n-1; n,sum 3、m文件有两种形式,一种称为命令文件(Script File),另一种称为函数文件(Function File),两种文件的扩展名都是m。 4、反馈控制系统品质要求:稳定性、准确性、快速性 5、按不同系统的特征方程式,可将自动控制系统分为线性系统和非线性系统。 6、MATLAB控制相关的工具箱 (1)控制系统工具箱 (2)系统辨识工具箱 (3)模型预测控制工具箱 (4)鲁棒控制工具箱 (5)神经网络工具箱 7、MATLAB系统的构成 (1)开发环境(2)数学函数库(3)MATLAB语言(4)图形处理系统(5)应用程序接口 8、常用工具箱 (1)控制类工具箱(2)应用数学类工具箱(3)信号处理类工具箱(4)其他常用工具箱 9、MATLAB语句形式:>>变量=表达式 10、MATLAB常用命令 quit 关闭MATLAB

exit 关闭MATLAB clc 清除MATLAB 命令窗口中的所有显示内容 clear 清除工作空间中保存的所有变量 11、MATLAB 基本数据类型:双精度数组、字符串数组、元胞数组、结构数组 12、矩阵的创建 (1)直接输入法(2)通过数据文件创建矩阵(3)通过m 文件创建矩阵(4)通过函数创建矩阵(5)冒号法 13、冒号法 [1]冒号法构造向量 冒号表达式的一般格式为:向量名=初值:步长:终值 [2]冒号法构造矩阵 一般格式为: A(:,j ):表示矩阵A 的第j 列; A(i ,:):表示矩阵A 的第i 行。 A(i,j)表示取矩阵A 的第i 行第j 列交叉位置的元素 14、矩阵的运算 /(矩阵的右除)或\(矩阵的左除) A -1=inv(A) 矩阵的逆 15、求下面方程组的根 1231231 2323532255316 x x x x x x x x x +-=?? -+=??--=?

数字信号处理MATLAB中FFT实现

MATLAB中FFT的使用方法 说明:以下资源来源于《数字信号处理的MATLAB实现》万永革主编 一.调用方法 X=FFT(x); X=FFT(x,N); x=IFFT(X); x=IFFT(X,N) 用MATLAB进行谱分析时注意: (1)函数FFT返回值的数据结构具有对称性。 例: N=8; n=0:N-1; xn=[43267890]; Xk=fft(xn) → Xk= 39.0000-10.7782+6.2929i0-5.0000i 4.7782-7.7071i 5.0000 4.7782+7.7071i0+5.0000i-10.7782-6.2929i Xk与xn的维数相同,共有8个元素。Xk的第一个数对应于直流分量,即频率值为0。 (2)做FFT分析时,幅值大小与FFT选择的点数有关,但不影响分析结果。在IFFT时已经做了处理。要得到真实的振幅值的大小,只要将得到的变换后结果乘以2除以N即可。 二.FFT应用举例 例1:x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t)。采样频率fs=100Hz,分别绘制N=128、1024点幅频图。

clf; fs=100;N=128;%采样频率和数据点数 n=0:N-1;t=n/fs;%时间序列 x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);%信号 y=fft(x,N);%对信号进行快速Fourier变换 mag=abs(y);%求得Fourier变换后的振幅 f=n*fs/N;%频率序列 subplot(2,2,1),plot(f,mag);%绘出随频率变化的振幅 xlabel('频率/Hz'); ylabel('振幅');title('N=128');grid on; subplot(2,2,2),plot(f(1:N/2),mag(1:N/2));%绘出Nyquist频率之前随频率变化的振幅xlabel('频率/Hz'); ylabel('振幅');title('N=128');grid on; %对信号采样数据为1024点的处理 fs=100;N=1024;n=0:N-1;t=n/fs; x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);%信号 y=fft(x,N);%对信号进行快速Fourier变换 mag=abs(y);%求取Fourier变换的振幅 f=n*fs/N; subplot(2,2,3),plot(f,mag);%绘出随频率变化的振幅 xlabel('频率/Hz'); ylabel('振幅');title('N=1024');grid on; subplot(2,2,4) plot(f(1:N/2),mag(1:N/2));%绘出Nyquist频率之前随频率变化的振幅 xlabel('频率/Hz'); ylabel('振幅');title('N=1024');grid on; 运行结果:

MATLAB数字信号处理

MATLAB 下的数字信号处理实现示例 附录一信号、系统和系统响应 1、理想采样信号序列 (1)首先产生信号x(n),0<=n<=50 n=0:50; A=444.128; a=50*sqrt(2.0)*pi; T=0.001; w0=50*sqrt(2.0)*pi; x=A*exp(-a*n*T).*sin(w0*n*T); close all subplot(3,1,1);stem(x); %定义序列的长度是50 %设置信号有关的参数 %采样率 %pi 是MATLAB 定义的π,信号乘可采用“.*”%清除已经绘制的x(n)图形 %绘制x(n)的图形 title(…理想采样信号序列?); (2)绘制信号x(n)的幅度谱和相位谱 k=-25:25; W=(pi/12.5)*k; X=x*(exp(-j*pi/12.5)).^(n?*k); magX=abs(X); %绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title(…理想采样信号序列的幅度谱?); angX=angle(X); %绘制x(n)的相位谱subplot(3,1,3);stem(angX) ; title (…理想采样信号序列的相位谱?) (3)改变参数为:A = 1,? = 0.4, & 0 = 2.0734, T = 1 n=0:50; A=1; a=0.4; T=1; w0=2.0734; x=A*exp(-a*n*T).*sin(w0*n*T); close all subplot(3,1,1);stem(x); title(…理想采样信号序列?); k=-25:25; W=(pi/12.5)*k; X=x*(exp(-j*pi/12.5)).^(n?*k); magX=abs(X); %定义序列的长度是50 %设置信号有关的参数 %采样率 %pi 是MATLAB 定义的π,信号乘可采用“.*” %清除已经绘制的x(n)图形 %绘制x(n)的图形 %绘制x(n)的幅度谱 subplot(3,1,2);stem(magX);title(…理想采样信号序列的幅度谱?); angX=angle(X); %绘制x(n)的相位谱

实验一 基于Matlab的数字信号处理基本

实验一 基于Matlab 的数字信号处理基本操作 一、 实验目的:学会运用MA TLAB 表示的常用离散时间信号;学会运用MA TLAB 实现离 散时间信号的基本运算。 二、 实验仪器:电脑一台,MATLAB6.5或更高级版本软件一套。 三、 实验内容: (一) 离散时间信号在MATLAB 中的表示 离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。离散序列通常用)(n x 来表示,自变量必须是整数。 离散时间信号的波形绘制在MATLAB 中一般用stem 函数。stem 函数的基本用法和plot 函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的。如果要实心,需使用参数“fill ”、“filled ”,或者参数“.”。由于MATLAB 中矩阵元素的个数有限,所以MA TLAB 只能表示一定时间范围内有限长度的序列;而对于无限序列,也只能在一定时间范围内表示出来。类似于连续时间信号,离散时间信号也有一些典型的离散时间信号。 1. 单位取样序列 单位取样序列)(n δ,也称为单位冲激序列,定义为 ) 0() 0(0 1)(≠=?? ?=n n n δ 要注意,单位冲激序列不是单位冲激函数的简单离散抽样,它在n =0处是取确定的值1。在MATLAB 中,冲激序列可以通过编写以下的impDT .m 文件来实现,即 function y=impDT(n) y=(n==0); %当参数为0时冲激为1,否则为0 调用该函数时n 必须为整数或整数向量。 【实例1-1】 利用MATLAB 的impDT 函数绘出单位冲激序列的波形图。 解:MATLAB 源程序为 >>n=-3:3; >>x=impDT(n); >>stem(n,x,'fill'),xlabel('n'),grid on >>title('单位冲激序列') >>axis([-3 3 -0.1 1.1]) 程序运行结果如图1-1所示。 图1-1 单位冲激序列

青岛理工大学临沂年数字信号处理及MATLAB试卷

A卷

一、[15分] 1、10 2、f>=2fh

3、()()()y n x n h n =* 4、1 -az -11a 或者-z z ,a 1 -z 或1-1-az -1z 5、对称性 、 可约性 、 周期性 6、191点,256 7、典范型、级联型、并联型 8、T ω = Ω,)2 tan(2ω T = Ω或)2arctan(2T Ω=ω。 二、[20分] 1、C 2、 A 3、 C 4、C 5、B 6、D 7、B 8、A 9、D 10、A (CACCB DBADA) 三、[15分] 1、(5分) 混叠失真:不满足抽样定理的要求。 改善方法:增加记录长度 频谱泄漏:对时域截短,使频谱变宽拖尾,称为泄漏 改善方法:1)增加w (n )长度 2)缓慢截短 栅栏效应:DFT 只计算离散点(基频F0的整数倍处)的频谱,而不是连续函数。 改善方法:增加频域抽样点数N (时域补零),使谱线更密 2、(5分) 3、 (5分) IIR 滤波器: 1)系统的单位抽样相应h (n )无限长 2)系统函数H (z )在有限z 平面( )上有极点存在 3)存在输出到输入的反馈,递归型结构 Fir 滤波器: ? 1)系统的单位冲激响应h (n )在有限个n 处不为零; ? 2)系统函数 在||0 z >处收敛,在 处只有零点,即有限z 平面只有零点,而全部极点都在z =0处; ? 3)机构上主要是非递归结构,没有输入到输出的反馈,但有些结构中也包含有反馈的递归部分。 四、计算题(40分) 1、(12分)解: 解: 对上式两边取Z 变换,得: ()H z ||0z >

MATLAB学习知识重点

1,计算矩阵的特征值和特征向量 【V,D 】=eig (A ) 其中A 指的是矩阵 V 指的是特征向量组成的矩阵 D 指的是特征值所组成的矩阵 A=[0 1 0;1 0 1;0 1 0]; >> [V,D]=eig(A) V = 0.5000 -0.7071 0.5000 -0.7071 0.0000 0.7071 0.5000 0.7071 0.5000 D = -1.4142 0 0 0 -0.0000 0 0 0 1.4142 2,求线性方程的解 1231231232314354578950x x x x x x x x x ++=-+=++= 这是一个非齐次方程方程,对于线性代数来讲,很难求解,但是利用MATLAB 来求 A=[1 2 3;3 -5 4;7 8 9]; 1 B=[14 5 50]; 2 x=A\B 3 B=[14;5;50]; 4 这4个语句的区别,特别是2.3两句的区别,2语句中B 表示的是1行3列,但是4语句中的表示的3行1列。 同时,X=A\B 很X=A/B 也是很有能区别的,具体的区别如下: X=A\B 表示的是A*X=B 的解 X=A/B 表示的是X*A=B 的解,在这里,具体解释如下;A*X=B ,

在线性代数中,X=A^(-1)B ,所以X=A\B。X*A=B的解为X=BA^(-1),就是X=B/A。 3,一元方程求根 这个在计算中是个难题,一元多次方程式很难求解的,对于纯粹的手工计算来说,所以有MATLAB比较方便,具体语句如下:()23 1.350.6680.4360.69552 =+++ f x x x x P=[0.69552 0.436 0.668 1.35]; >> X=roots(P) X = 0.2817 + 1.2456i 0.2817 - 1.2456i -1.1902 + 0.0000i 对于这个方程来说,要注意的是,在构成向量时,一定要从告辞往低次排列,中间缺少次数的,用0代替,求解语句是roots(P)。4,图形处理功能 A, 可以绘制函数图像,具体的语句如下: >> x=linspace(0,6); 这个表示X轴,在0到6内取100个点,这是默认的数值100。当然还有可以设定数值的方法linspace(0,6,100)表示的是在0到6内取等间隔取100个点。 >> y1=sin(2.*x); >> plot(x,y1)这是绘制函数sin(2X)的图像,在这里要注意的,

数字信号处理指导书matlab版

实验1 时域离散信号的产生 一、实验目的 学会运用MATLAB 产生常用离散时间信号。 二、实验涉及的matlab 子函数 1、square 功能:产生矩形波 调用格式: x=square(t);类似于sin (t ),产生周期为2*pi ,幅值为+—1的方波。 x=square(t ,duty);产生制定周期的矩形波,其中duty 用于指定脉冲宽度与整个周期的比例。 2、rand 功能:产生rand 随机信号。 调用格式: x=rand (n ,m );用于产生一组具有n 行m 列的随机信号。 三、实验原理 在时间轴的离散点上取值的信号,称为离散时间信号。通常,离散时间信号用x (n )表示,其幅度可以在某一范围内连续取值。 由于信号处理所用的设备主要是计算机或专用的信号处理芯片,均以有限的位数来表示信号的幅度,因此,信号的幅度也必须“量化”,即取离散值。我们把时间和幅度上均取离散值的信号称为时域离散信号或数字信号。 在MATLAB 中,时域离散信号可以通过编写程序直接生成,也可以通过对连续信号的等间隔抽样获得。 下面介绍常用的时域离散信号及其程序。 1、单位抽样序列 ? ? ?≠==000 1)(k k k δ MATLAB 源程序为

1) function [x,n] = impuls (n0,n1,n2) % Generates x(n) = delta(n-n0); n=n0 处建立一个单位抽样序列% [x,n] = impuls (n0,n1,n2) if ((n0 < n1) | (n0 > n2) | (n1 > n2)) error('arguments must satisfy n1 <= n0 <= n2') end n = [n1:n2]; x = [zeros(1,(n0-n1)), 1, zeros(1,(n2-n0))]; 将上述文件存为:impuls.m,在命令窗口输入 n0=0,n1=-10,n2=11; [x,n]=impuls (n0,n1,n2); stem(n,x,’filled’) 2)n1=-5;n2=5;n0=0; n=n1:n2; x=[n==n0]; stem(n,x,'filled','k'); axis([n1,n2,1.1*min(x),1.1*max(x)]); title('单位脉冲序列'); xlabel('时间(n)'); ylabel('幅度x(n)'); 3)n1=-5;n2=5;k=0; n=n1:n2; nt=length(n); %求n点的个数 nk=abs(k-n1)+1; %确定k在n序列中的位置 x=zeros(1,nt); %对所有样点置0 x(nk)=1; %对抽样点置1 stem(n,x,'filled','k'); axis([n1,n2,0,1.1*max(x)]); title('单位脉冲序列'); xlabel('时间(n)'); Ylabel('幅度x(n)');

中国科学院大学_张敏洪_matlab知识点整理_第二章MATLAB 语言程序设计基础

第二章MATLAB 语言程序设计基础 ——MATLAB 通用命令-3 ——MATLAB 的保留常量,运算符号-10 ——符号变量声明syms var_list var_props-14 ——符号型数值可采用变精度函数求值vpa(A), 或vpa (A,n)-15 ——冒号表达式v=s1:s2:s3该函数生成一个行向量v,其中s1是起始值,s2是步长(若省略步长为1),s3是最大值-18 ——子矩阵提取B=A(v1,v2) v1、v2分别表示提取行(列)号构成的向量。(逗号)-20 ——矩阵翻转-25 ——数学运算符号及标点符号,乘除法,左除右除,乘方-27 ——矩阵的逻辑运算-35 ——矩阵的比较运算>, >=, <, <=, ==,~=, find(), all(), any() -36 ——解析结果的化简与变换s1=simple(s) collect( ) 合并同类项 expand( ) 展开多项式 factor( ) 因式分解 numden( ) 提取多项式的分子和分母 sincos( ) 三角函数的化简-38 ——变量替换-41 ——基本数论运算---下取整、上取整、四舍五入、离0近方向取整、最简有理数、求模的余数、最大公约数、最小公倍数、质因数分解、判定是否为质数-42 ——2.4 MATLAB 语言流程控制-47 ——nargin,nargout 分别表示输入和返回变量的实际个数 varargin, varargout 输入、输出变量列表(可变输入输出个数) ——2.5.2 可变输入输出个数conv( ) 可以计算两个多项式的积-65 ——2.6 二维图形绘制-68 ——图形元素属性获取与修改-74 ——2.6.2 其他二维图形绘制语句-76 ——2.6.3 隐函数绘制及应用-80 ——2.7.1 三维曲线绘制-81 ——2.7.2 三维曲面绘制-83

数字信号处理的MATLAB实现

昆明理工大学信息工程与自动化学院学生实验报告 (2011—2012 学年第二学期) 课程名称:数字信号处理开课实验室:信自楼111 2012 年 5 月 31 日年级、专业、班生医学号姓 名 成绩 实验项目名称数字信号处理的matlab 实现指导教师 教 师 评语教师签名: 年月日 一.实验目的 熟练掌握matlab的基本操作。 了解数字信号处理的MATLAB实现。 二.实验设备 安装有matlab的PC机一台。 三.实验内容 .1.求信号x(n)=cos(6.3Пn/3)+cos(9.7Пn/30)+cos(15.3Пn/30),0≤n≤29的幅度频谱. 2. 用冲击响应不变法设计一个Butterworth低通数字滤波器,要求参数为: Wp=0.2Пαp=1dB Ws=0.3Пαs=15dB 3.用双线性变换法设计一个Chebyshev高通IIR滤波器,要求参数为: Wp=0.6Пαp=1dB Ws=0.4586Пαs=15dB 4.用窗函数法设计一个低通FIR滤波器,要求参数为: Wp=0.2Пαp=0.3dB Ws=0.25Пαs=50dB 5.用频率抽样法设计一个带通FIR滤波器,要求参数为: W1s=0.2П W1p=0.35П W2p=0.65П W2s=0.8П αs=60dB αp=1dB 6.根据 4 点矩形序列,( n ) = [1 1 1 1] 。做 DTFT 变换,再做 4 点 DFT 变换。然后分别补零做 8 点 DFT 及 16 点 DFT。 7.调用filter解差分方程,由系统对u(n)的响应判断稳定性 8编制程序求解下列系统的单位冲激响应和阶跃响应。 y[n]+ 0.75y[n -1]+ 0.125y[n -2] = x[n]- x[n -1] 四.实验源程序 1. n=[0:1:29]; x=cos(6.3*pi*n/30)+cos(9.7*pi*n/30)+cos(15.3*pi*n/30);

2010matlab复习提纲

2010—2011数值计算与MATLAB复习提纲 考试知识点 第二章 1)变量的命名规则 2)常用预定义变量:ans、eps、pi、i、j、inf、Inf、NaN、nan 3)内存变量文件的生成与加载:save / load 4)常用数学函数:sin、cos、sqrt、log、log10、log2、exp、pow2、abs、rem、 mod、fix、floor、ceil、round 5)矩阵的建立:直接输入法, 利用冒号表达式建立一个向量、linspace的含义与用法、 建立大矩阵 a)熟练掌握书本相关例题 6)矩阵的拆分:矩阵元素,size()\length(),矩阵拆分,利用空矩阵删除矩阵的元素 a)熟练掌握书本相关例题 7)特殊矩阵: zeros/ones/eye/rand/randn/zeros(size(A)) a)给定区间内的随机矩阵的建立 b)给定均值和方差的正态分布随机矩阵的建立 c)熟练掌握相关例题P26,2-4 8)Matlab运算: a)算术运算:+、-、*、/、\、^、点运算 b)关系运算:P32页6种关系运算符、关系运算德运算法则、相关例题 c)逻辑运算P33页3种逻辑运算符& | ~ 逻辑运算德运算法则、相关例题 d)运算优先级:算术> 关系> 逻辑 e)find()函数 9)对角阵与三角阵:diag()、triu()、tril() 10)矩阵的转置与旋转:rot90() 11)矩阵的逆、方阵的行列式:inv()、det() 12)字符串 ?本章相关的上机习题 第三章 matlab程序设计 1)命令文件与函数文件的区别:参数、变量、调用方式 2)程序的顺序结构,input函数及其应用、disp函数及其应用、程序的暂停 3)选择结构if语句,switch语句 4)循环结构for语句,while语句,break语句,continue语句、循环的嵌套P66, 3-8,3-9,3-10 5)函数文件:函数的定义,函数的调用(包括函数的递归调用)P70-71,3-15,3-16 6)全局变量与局部变量的用法:P72,3-18 ?本章相关的例题和布置的上机习题

数字信号处理MATLAB实验1

实验一熟悉MATLAB环境 一、实验目的 (1)熟悉MATLAB的主要操作命令。 (2)学会简单的矩阵输入和数据读写。 (3)掌握简单的绘图命令。 (4)用MATLAB编程并学会创建函数。 (5)观察离散系统的频率响应。 二、实验内容 认真阅读本章附录,在MATLAB环境下重新做一遍附录中的例子,体会各条命令的含义。在熟悉了MATLAB基本命令的基础上,完成以下实验。 上机实验内容: (1)数组的加、减、乘、除和乘方运算。输入A=[1234],B=[345 6],求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B并用stem语句画出 A、B、C、D、E、F、G。 (2)用MATLAB实现以下序列。 a)x(n)=0.8n0≤n≤15 b)x(n)=e(0.2+3j)n0≤n≤15 c)x(n)=3cos(0.125πn+0.2π)+2sin(0.25πn+0.1π)0≤n≤15 (n)=x(n+16),绘出四个d)将c)中的x(n)扩展为以16为周期的函数x 16 周期。 (n)=x(n+10),绘出四个e)将c)中的x(n)扩展为以10为周期的函数x 10 周期。

(3)x(n)=[1,-1,3,5],产生并绘出下列序列的样本。 a)x 1(n)=2x(n+2)-x(n-1)-2x(n) b)∑=-=5 1k 2) k n (nx (n) x (4)绘出下列时间函数的图形,对x轴、y轴以及图形上方均须加上适当的标注。 a)x(t)=sin(2πt)0≤t≤10s b)x(t)=cos(100πt)sin(πt) 0≤t≤4s (5)编写函数stepshift(n0,n1,n2)实现u(n-n0),n1

MATLAB实现数字信号处理

《数字信号处理》课程设计实例: 声音信号的处理 一.摘要: 这次课程设计的主要目的是综合运用本课程的理论知识进行频谱分析以及滤波器设计,通过理论推导得出相应结论,并利用MATLAB或者DSP开发系统作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。通过对声音的采样,将声音采样后的频谱与滤波。 MATLAB全称是Matrix Laboratory,是一种功能强大、效率高、交互性好的数值和可视化计算机高级语言,它将数值分析、矩阵运算、信号处理和图形显示有机地融合为一体,形成了一个极其方便、用户界面友好的操作环境。。经过多年的发展,已经发展成为一种功能全面的软件,几乎可以解决科学计算中所有问题。MATLAB软件还提供了非常广泛和灵活的用于处理数据集的数组运算功能。 在本次课程设计中,主要通过MATLAB来编程对语音信号处理与滤波,设计滤波器来处理数字信号并对其进行分析。 二.课程设计目的: 综合运用本课程的理论知识进行频谱分析以及滤波器设计,通过理论推导得出相应结论,并利用MATLAB作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。 三.设计容: 容:录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性

变换法设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;换一个与你性别相异的人录制同样一段语音容,分析两段容相同的语音信号频谱之间有什么特点;再录制一段同样长时间的背景噪声叠加到你的语音信号中,分析叠加前后信号频谱的变化,设计一个合适的滤波器,能够把该噪声滤除。 四.设计原理: 4.1.语音信号的采集 熟悉并掌握MATLAB中有关声音(wave)录制、播放、存储和读取的函数,在MATLAB环境中,有关声音的函数有: a:y=wavrecord(N,fs,Dtype);利用系统音频输入设备录音,以fs为采样频率,默认值为11025,即以11025HZ进行采样。Dtype为采样数据的存储格式,用字符串指定,可以是:‘double’、‘single’、’int16’、‘int8’其中只有int8是采用8位精度进行采样,其它三种都是16位采样结果转换为指定的MATLAB数据; b:wavplay(y,fs);利用系统音频输出设备播放,以fs为播放频率,播放语音信号y; c:wavwrite((y,fs,wavfile);创建音频文件; d:y=wavread(file);读取音频文件; 关于声音的函数还有sound();soundsc();等。 4.2滤波器: 4.21.IIR滤波器原理 冲激响应不变法是使数字滤波器在时域上模拟滤波器,但是它们的缺点是产生频率响应的混叠失真,这是由于从s平面到z平面是多值的映射关系所造成的。 双线性变换法是使数字滤波器的频率响应与模拟滤波器的频率响应相似的一种变换方法。为了克服多值映射这一缺点,我们首先把整个s平面压缩变换到某一中介的s1平面的一条横带里,再通过变换关系将此横带变换到整个z平面上去,这样就使得s平面与z平面是一一对应的关系,消除了多值变换性,也就消除了频谱混叠现象。

《MATLAB程序设计》复习资料

Matlab 习题及复习要点 1. Matlab 的英文组成;程序和变量的命名规则; 在MATLAB 语言中是区分字母大小的,也就是说,大写字母和小写字母代表的东西是不同的。 2.Matlab 中注释、关键词等的显示颜色;如何设置当前路径、如何设置搜索路径(例如第一次上机练习过的,新建的“D:\temp ”目录中有脚本文件abc.m ,若要能在命令窗口输入abc 执行则..); 3.熟悉Matlab 中的几种数据类型(int8、double 、logical 等); 4.在MATLAB 中计算数学公式(如三角函数、对数、开根号等)的表达; 5.掌握数组的几个操作(裁剪、扩增、eye 、zeros 等)、对角阵指令、均匀分布随即向量指令;数组中行和列的分隔符; 6. 在循环结构中的几个命令:break 、continue 等; 7. 已知字符'A'、'Z'、'a'、'z'的ASCII 码分别为65、90、97、122,str1为全为大写字母的字符串,采用什么命令可将该字符串转换成小写。 8. 在MATLAB 中求解线性方程组=Ax b 可采用什么指令; 9. 掌握基本运算符,例如*、.*、/、./、^、.^ 的区别 10.读懂逻辑表达式,会写出逻辑表达式的结果(0或1) 11. 掌握集中循环结构,尤其if..elseif…else…end 和swich…case 结构的语法,要准确。 12. 会编写分段函数的程序; x 和y 满足如下关系: 221211212x x y x x x x ?? 编写函数y=f(x),用于计算上述分段函数。 13. 绘图时采用的几个命令的掌握:hold on 、plot 、plot3 14*.用语句[x, y]=meshgrid(a:b)构建网格数据,例子如下: 示例一: x=-3:1:3;y=-2:1:2; [X,Y]= meshgrid(x,y); 这里meshgrid (x ,y )的作用是分别产生以向量x 为行,向量y 为列的两个大小相同的矩阵,其中x 的行是从-3开始到3,每间隔1记下一个数据,并把这些数据集成矩阵X ;同理y 的列则是从-2到2,每间隔1记下一个数据,并集成矩阵Y 。即 X= -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3

数字信号处理基本知识点Matlab实现

数字信号处理(第二版) 绪论 1.4 MATLAB 在信号处理中的应用简介 MATLAB 是美国Mathworks 公司于1984年推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理、系统仿真和图形显示于一体,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作。 MATLAB 软件包括五大通用功能:数值计算功能(Numeric ),符号运算功能(Symbolic );数据可视化功能(Graphic ),数据图形文字统一处理功能(Notebook )和建模仿真可视化功能(Simulink )。该软件有三大特点:一是功能强大;二是界面友善、语言自然;三是开放性强。目前,Mathworks 公司已推出30多个应用工具箱。MA TLAB 在线性代数、矩阵分析、数值及优化、数理统计和随机信号分析、电路与系统、系统动力学、信号和图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通信系统、以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。 2.10 离散时间信号与系统的Matlab 表示 2.10.1 离散时间信号的表示和运算 1、基本序列的Matlab 表示 单位采样序列 在MA TLAB 中,单位采样序列可以通过编写以下的DTimpulse .m 文件来实现,即 function y=DTimpulse (n) y=(n==0); %当参数为0时冲激为1,否则为0 调用该函数时n 必须为整数或整数向量。 单位阶跃序列 在MA TLAB 中,单位阶跃序列可以通过编写DTu .m 文件来实现,即 function y=DTu (n) y=n>=0; %当参数为非负时输出1 调用该函数时n 必须为整数或整数向量。 矩形序列 用MA TLAB 表示矩形序列可根据公式()()()N R n u n u n N =--并利用DTu 函数生成,即 function y=DTR(n,N) y=DTu(n)-DTu(n-N); 调用该函数时n 必须为整数或整数向量,N 必须为整数。 实指数序列 用MA TLAB 表示实指数序列()(),n x n a u n n N a R =∈∈,即

南京理工大学数字信号处理matlab上机完美版

1.已知3阶椭圆IIR数字低通滤波器的性能指标为:通带截止频率0.4π,通带波纹为0.6dB,最小阻带衰减为32dB。设计一个6阶全通滤波器对其通带的群延时进行均衡。绘制低通滤波器和级联滤波器的群延时。 %Q1_solution %ellip(N,Ap,Ast,Wp) %N--->The order of the filter %Ap-->ripple in the passband %Ast->a stopband Rs dB down from the peak value in the passband %Wp-->the passband width [be,ae]=ellip(3,0.6,32,0.4); hellip=dfilt.df2(be,ae); f=0:0.001:0.4; g=grpdelay(hellip,f,2); g1=max(g)-g; [b,a,tau]=iirgrpdelay(6,f,[0 0.4],g1); hallpass=dfilt.df2(b,a); hoverall=cascade(hallpass,hellip); hFVT=fvtool([hellip,hoverall]); set(hFVT,'Filter',[hellip,hoverall]); legend(hFVT,'Lowpass Elliptic filter','Compensated filter'); clear; [num1,den1]=ellip(3,0.6,32,0.4); [GdH,w]=grpdelay(num1,den1,512); plot(w/pi,GdH); grid xlabel('\omega/\pi'); ylabel('Group delay, samples'); F=0:0.001:0.4; g=grpdelay(num1,den1,F,2); % Equalize the passband Gd=max(g)-g; % Design the allpass delay equalizer [num2,den2]=iirgrpdelay(6,F,[0,0.4],Gd); [GdA,w] = grpdelay(num2,den2,512); hold on; plot(w/pi,GdH+GdA,'r');

计量经济学(英文)重点知识点考试必备

第一章 1.Econometrics(计量经济学): the social science in which the tools of economic theory, mathematics, and statistical inference are applied to the analysis of economic phenomena. the result of a certain outlook on the role of economics, consists of the application of mathematical statistics to economic data to lend empirical support to the models constructed by mathematical economics and to obtain numerical results. 2.Econometric analysis proceeds along the following lines计量经济学 分析步骤 1)Creating a statement of theory or hypothesis.建立一个理论假说 2)Collecting data.收集数据 3)Specifying the mathematical model of theory.设定数学模型 4)Specifying the statistical, or econometric, model of theory.设立统计或经济计量模型 5)Estimating the parameters of the chosen econometric model.估计经济计量模型参数 6)Checking for model adequacy : Model specification testing.核查模型的适用性:模型设定检验 7)Testing the hypothesis derived from the model.检验自模型的假设 8)Using the model for prediction or forecasting.利用模型进行预测 Step2:收集数据 Three types of data三类可用于分析的数据 1)Time series(时间序列数据):Collected over a period of time, are collected at regular intervals.按时间跨度收集得到

相关文档
相关文档 最新文档