当前位置:文档之家› 基于Matlab的数字信号处理基本操作

基于Matlab的数字信号处理基本操作

基于Matlab的数字信号处理基本操作
基于Matlab的数字信号处理基本操作

基于Matlab的数字信号处理基本操作

一、实验目的

1、熟悉Matlab软件的的运行环境,

2、了解Matlab基本命令与操作,熟悉数据输入、输出与编辑方法;

3、用Matlab函数产生离散信号;

4、用Matlab进行离散信号的表示与运算;

5、运用基本函数绘制常用函数的图形。

二、实验环境:

1、Matlab 6.5

2、PC机

三、实验方法:

Matlab操作界面的默认窗口如图1.1所示,Matlab的通用操作界面包括9个常用的窗口,分别是:命令窗口、历史命令窗口、当前目录浏览器窗口、工作空间浏览器窗口、数组编辑窗口、交互界面分类目录窗口、M文件编辑/调试器窗口、帮助导航/浏览器窗口和程序性能剖析窗口。

图1-1

进入Matlab 6.5命令窗口(Command Window),命令窗口会默认出现在Matlab 界面的右侧,在命令窗口可键入各种Matlab的命令、函数和表达式,并显示除图形以外的所有运算结果。

命令串口也可单独显示,选择菜单“VIEW”→“Undock Command Window”命令,可使单独的命令窗口返回Matlab界面。

Matlab 6.5版运行时,命令窗口中的每个命令行前会出现提示符“〉〉”。与以前的版本不同,命令窗口内显示的字符和数值采用不同的颜色,在默认的情况下,输入的命令、表达式以及计算结果等采用黑色字体,字符串采用红色,“if”、“for”等关键词采用蓝色。

命令窗口中命令行的编辑,由于Matlab把命令窗口中输入的所有命令都记录在专门的“历史命令”(Command History)空间中,因此Matlab命令窗口不仅可以对输入的命令进行编辑和运行,而且可以对已输入的命令进行回调、编辑和重运行。

命令窗编辑功能:键入和修改程序的方法与通常的文字处理相仿。特殊的功

能键为:

ESC:恢复命令输入的空白状态

↓:调出下一行命令

↑:调出上一行(历史)命令

命令窗编辑功能在程序调试时十分有用。对于已执行过的命令,如要做些修改后重新执行,就可不必重新键入,用↑键调出原命令做修改即可。

主菜单中的编辑项功能:用它可以把屏幕上加深了的文字裁减(Cut)或复制(Copy)下来,然后粘贴(Paste)到任一其他视窗的任何位置上去。

主菜单中的视图项功能:用它可以改变屏幕上显示的视窗布局。例如,我们希望只显示命令窗,使它占整个屏幕,依次引出View的下拉菜单,即【View】→【Desktop Layout】→【Command Window Only】

键入“help”,屏幕上将显示系统中已装入的函数库(即子目录)的名称。

§键入help子目录名,如help elfun,即得出elfun库中各函数名。

§键入help函数名,如help tan2,即得到tan2函数的意义及用法。

退出MATLAB有两种方法。一种是键入exit或quit,另一种是用鼠标双击左上角的小方块或单击右上角的×号,后者是非正常退出,该次的输入命令将不记录在“历史命令”中,所以应当尽量避免使用。

在命令窗口中,默认情况下数值计算结果的显示格式为:当数值为整数,以整数显示;当数值为实数,以小数后4位的精度情况显示,即以“短(Short)”格式显示;如果数值的有效数字超出了这一范围,则以科学计数法显示结果。

注意:数值的显示精度并不代表数值的存储精度。

在命令窗口可以直接输入操作命令,对命令窗口进行控制。

例如:

(1)用于清空命令窗口中的显示内容

语法:clc

(2)在命令窗口中控制其后每页的显示内容行数。

语法:more

通常,只要执行了一种绘图命令,就会自动产生图形窗,以后的绘图都在这一个图形窗中进行。如想再建一个或几个图形窗,则可键入figure,MATLAB会新建一个图形窗,并自动给它依次排序。如果要认为规定新图为图3,则可键入

figure(3)。如果调看已经存在的图形窗3,也应键入figure(3)。

MATLAB程序编制有两种方式。一种称为行命令方式,这就是在命令窗中一行一行地输入程序,计算机每次对一行命令作出反应,像计算器那样。这只能编辑简单的程序,在入门时可以用这种方式。程序稍复杂一些,就应把程序写成一个有多行语句组成的文件,让MATLAB来执行这个文件。编写和修改这种文件程序就要用到文本编辑器。

命令窗上方最左边的按钮是用来打开文本编辑器空白页的,左边第二个按钮是用来打开原有程序文件的。

在命令窗中键入demo,将出现MATLAB的演示窗,演示窗的左侧是库目录。双击目录中的名称或选中该项目后点击右下角的【Run …】方框,即出现该项目的演示界面。通常,演示画面的右侧是一些功能按钮,左上半部是图形,而左下半部则是相应的MATLAB程序语句。还可以在界面上直接修改这些语句并重新执行。因此演示程序也是一个很好的学习过程。

四、实验用MATLAB语言工具函数简介

本次试验在熟悉软件的运行环境的基础上,要求完成信号的产生以及图形的输出。

MATLAB可以根据给出的数据,用绘图命令在屏幕上画出其图形,通过图形对科学计算进行描述。

Plot命令用来绘制x-y坐标中的曲线。它是一个功能很强的命令。输入变量不同,可以产生很多不同的结果。

1、plot(y):输入一个数组的情况

如果y是一个数组,函数plot(y)给出线性直角坐标的二维图,以y中元素的下标作为X坐标,y中元素的值作为Y坐标,一一画出在X-Y坐标平面图上,而且将各点以直线相连。例如,要画出是个随机数的曲线。可列出:y=5*(rand(1,10)-.5)

由Rand函数产生的随机数的最大值为1,最小数为0,平均值为0.5。所以y的最大值为2.5,最小值为-2.5,平均值为0。键入plot(y),MATLAB会产生一个图形窗,自动规定最合适的坐标比例绘图。X方向是下标,从1~10,Y 方向范围则是-4~4,并自动标出刻度。可以用title命令给图加上标题,用xlabel,

ylabel命令给坐标轴加上说明,用text或gext命令可在图上任何位置加标注,也可用grid命令在图上打上坐标网格线。

MATLAB实现程序和形成的图如下:

y=5*(rand(1,10)-.5)

y =

Columns 1 through 9

2.2506 -1.3443 0.5342 -0.0701 1.9565 1.3105 -0.2177 -2.4075 1.6070

Column 10

-0.2765

>> plot(y)

>> title('my first plot')

>> xlabel('x'),ylabel('y')

>> grid

2、plot(x,y):输入两个数组的情况

如果数组x和y具有相同长度,命令plot(x,y)将绘出以x元素为横坐标,y元素为纵坐标的曲线。

3、用plot(t,[y1,y2,…])命令

该语句中t是向量,y=[y1,y2,…]是矩阵,若t是列(行)向量,则y的列(行)长与t长度相同。Y的行(列)数就是曲线的根树。例如,>> t=0:0.5:4*pi;

>> y=exp(-0.1*t).*sin(t);

>> y1=exp(-0.1*t).*sin(t+1);

>> plot(t,[y;y1])

4、用hold命令

在画完前一张图后用hold命令保持住,再画下一张曲线。如键入

Plot(t,y),hold on,plot(t,y1,‘g’)

执行此命令时,图形窗产生第一幅图形,同时,命令屏幕显示Current plot held,图形处于保持状态。再执行plot(t,y1,‘g’),就把第二幅图以绿色的曲线迭合在同一张图上。

5、图形控制

(1)figure:打开图形窗口。MATLAB中的第一幅图随plot命令自动打开,以后的plot命令都画在同一张图上。如要画在另一张新图上,就要用figure 命令打开新的图形窗口。有了顺序为1,2,3,…的几个图形窗后,再用plot 语句,即键入figure(i),表示打开第i幅图。否则,所有的图都会画在最后显示的那张图上。

(2)clf:清除当前图形窗的内容。

(3)hold:保持当前图形窗的内容,再键入hold,就解除冻结。这种拉线开关式的控制有时会造成混乱,可以用hold on和hold off命令以得到确定的状态。

(4)close:关闭当前图形窗。close all:关闭所有图形窗。

(5)subplot(n,m,p)命令:将图形窗口分为n╳m个子图,在第p个子

图处绘制图形。 五、实验内容:

1、利用Matlab 产生单位脉冲序列)(n δ,并画图。

2、利用Matlab 产生单位阶跃序列)(n μ,并画图。

3、利用Matlab 产生实指数序列:n X )9.0(=,并画图。

4、产生被噪声污染的正弦信号。

5、实现一个由50 H Z 和120H Z 正弦信号构成的和信号。

6、周期为N 的正弦序列)2sin(

n N π,且10-≤≤N n 。

7、矩形序列)(n R N

选出4—5个题目作为实验题目。 六、实验报告

1、列出实验程序清单,并附上必要的程序说明。

2、记录实验结果,实验后,对结果进行分析。

实验二 用Matlab 进行信号的一维快速傅立叶变换(FFT )

一、试验目的

1、了解傅立叶变换的物理意义:序列的离散傅立叶变换就是序列的离散频谱;

2、了解FFT ,掌握FFT 函数的调用格式;

3、应用FFT 计算信号的频谱。 二、实验原理:

1、离散傅里叶变换(DFT )及其主要性质

DFT 表示离散信号的离散频谱,DFT 的主要性质中有奇偶对称特性,虚实特性等。通过实验可以加深理解。

例如:实序列的DFT 具有偶对称的实部和奇对称的虚部。这可以证明如下: 由定义

∑-==1

0)()(N n kn N

W n x k X

∑∑-=-=-=1

01

0)

2s i n ()()2c o s ()(N n N n kn N n x j kn N n x π

π

∑-=-=-1

)()()(N n n

k N N

W n x k N X

∑-=-=

1

)(N n kn N

Nn

W W

n x

∑-=-=1

0)(N n kn

N W n x

∑∑-=-=+=1

01

0)

2s i n ()()2c o s ()(N n N n kn N n x j kn N n x π

π

)(*)(k N X k X -=∴

实序列DFT 的这个特性,在本实验中可以通过实指数序列及三角序列看出来。

对于单一频率的三角序列来说它的DFT 谱线也是单一的,这个物理意义我们可以从实验中得到验证,在理论上可以推导如下: 设:

)()2sin(

)(n R n N n x N π

=,其DFT 为:

∑-=-=10

2)()(N n kn N

j e

n x k X π

kn N

j N n e n N π

π

21

0)2sin(--=∑= kn N

j N n n N j n

N j e e e j π

π

π

21022)(21--=-∑-= ∑-=+----=10)1(2)

1(2)(21N n k n N

j k n N j e e j π

π

从而∑-=-=-=10220)(21)0(N n n N

j n

N j e e j X π

π

∑-=--==-=10422)1(21)1(N n n N

j N j j N e j X π

0)2(=X

0)2(=-N X

22)(21)1(102)2(2N j j N e e j N X N n n j n N N j =-=-=-∑-=--ππ

以上这串式中)0(X 反映了)(n x 的直流分量,)1(x 是)(n x 的一次谐波,又根据虚实特性)1()1(*X N X =-,而其它分量均为零。

当周期减小时显然

)()3/2sin(

n R n N N π

的谱只应该在3=k 及3-=N k 才有分

量,实验者可以通过和上述相同的步骤加以理论证明。

由于

)(2cos

n R n N N ?π

与)(2sin n R n N N ?π相位差2π,所以它的DFT 只包括实部

而没有虚部,以上这些性质可在本实验中得到验证。

2、利用DFT 对信号进行频谱分析

DFT 的重要应用之一是对时域连续信号的频谱进行分析,称为傅里叶分析,时域连续信号离散傅里叶分析的基本步骤如图2.1所示。

)(t s c L P F A/D X D F T )(k V

)(Ωj H α

)(n w

图2.1 时域连续信号离散傅里叶分析的处理步骤

其中消混叠低通滤波器LPF (预滤波器)的引入,是为了消除或减少时域连续信号转换成序列时可能出现的频谱混叠的影响。实际工作中,时域离散信号

)(n x 的时宽是很长的甚至是无限长的(例如语音或音乐信号)。由于DFT 的需要,

必须把)(n x 限制在一定的时间间隔之内,即进行数据截断。数据的截断相当于加窗处理。因此,在计算)(n x 的DFT 之前,用一个时域有限的窗函数)(n w 加到)(n x 上是非常必要的。

)(t x c 通过A/D 变换器转换成采样序列)(n x 一时域离散序列。其频谱用)(ωj e X 表示,它是频率ω的周期函数,即

∑∞-∞=+=m c jw

T

m

j T j X T e X )2(1)(πω

其中)(Ωj X c 或

)

(T j

X c ω

为)(t x c 的频谱。

在实际应用中,消混叠低通滤波器的阻带不可能是无限衰减的,故由)

(Ωj X c 周期延拓得到的

)(ω

j e X 有非零重叠,即出现混叠现象。 由于进行DFT 的需要,必须对序列)(n x 进行加窗处理,即)()()(n w n x n v ?=加窗对频域的影响,用周期卷积表示。

?-

-=

π

πθωθ

ωθ

π

d e W e

X e V j j j )()(21)()(

最后是进行DFT 运算。加窗后的DFT 是

∑-=-=1

2)()(N n nk N

j

e

n v k V π,10-≤≤N k

其中假设窗函数长L 小于或等于DFT 长度N 。

有限长序列)()()(n w n x n v ?=的DFT 相当于)(n v 傅里叶变换的等间隔采样。

)(t x c

)(n x

)

(n v

k N

j e V k V πωω2)

()(=

=

)(k v 便是)(t s c 的离散频率函数

因为DFT 频率间隔为N π

2,且模拟频率Ω和数字频率ω间的关系为T Ω=ω,

所以离散的频率函数各频率点对应的模拟频率为:

NT k π2=

Ω

显然频率分辨率f ?为:

NT f 1=

?

利用DFT 计算频谱,只给出频谱

k N k πω2=

或k NT k π2=Ω的频率分量,即频

率的采样值,而不可能得到连续的频谱函数。

如果在两个离散的谱线之间有一个特别大的频谱分量,就无法检测出来了。 为了在保持原来频谱形状不变的情况下,使谱线加密,即使频域采样点数增加,从而使原来看不到的频谱分量变得可以看到,可以通过在信号数据的末端补加一些零值点,使DFT 计算周期内点数增加,但又不改变原有的记录数据的方法来实现。

3、快速离散傅里叶变换(FFT )

快速离散傅里叶变换是计算离散傅里叶变换的一种快速算法,为了提高运算速度,FFT 将DFT 的计算逐次分解成较小点数的DFT 。按时间抽取(Decimation-In-Time(DIT)FFT 算法把输入序列)(n x 按其n 值为偶数或是奇数分解成越来越短的序列。按频域抽取(Decimation-In-Frequency(DIF)FFT 算法是把输出序列)(k X 按其k 值是偶数或是奇数来分解成越来越短的序列。 三、实验用MATLAB 语言工具函数简介

MATLAB 中计算序列的离散傅里叶变换和逆变换是采用快速算法,利用fft 和ifft 函数实现。

函数fft 用来求序列的DFT,调用格式为: [X k ]=fft(x n ,N)

其中x n 为有限长序列,N 为序列x n 的长度,X k 为序列x n 的DFT.

函数ifft 用来求IDFT,调用格式为: [x n ]=ifft(X k ,N)

其中,X k 为有限长序列,N 为序列X k 的长度,x n 为序列X k 的IDFT.

例2.1:已知序列1000)52.0cos()48.0sin(2)(≤≤+=n n n n x ππ,试绘制x (n )及它的离散傅里叶变换)(k X 图。

MATLAB 实现程序: clear all N=100; n=0:N-1;

xn=2*sin(0.48*pi*n)+cos(0.52*pi*n); XK=fft(xn,N); magXK=abs(XK); phaXK=angle(XK); subplot(1,2,1) plot(n,xn)

xlabel('n');ylabel('x(n)'); title('x(n) N=100'); subplot(1,2,2) k=0:length(magXK)-1; stem(k,magXK,'.');

xlabel('k');ylabel('|X(k)|'); title('X(k) N=100'); 运行结果:

50100

-3

-2-101

23n

x (n )

x(n) N=100

50100

02040

60

80

100

k

|X (k )|

X (k) N=100

序列x(n)及利用FFT 求解的相应频谱

四、实验要求与实验内容:

1、一个由50Hz 和120Hz 正弦信号构成的信号,受零均值随机信号的干扰,数据采样率为1000Hz 。现通过fft 函数来分析其信号频率成分。

2、一50Hz 受噪声污染的正弦信号,对其进行频谱分析。

3、分别对下列序列进行频谱分析:

(1) 实指数序列n

)08.1( (2) 复指数序列n j )3.09.0(3+

(3) 周期为N 的正弦序列)2sin(n N π

,且10-≤≤N n (4) 周期为N 的余弦序列)2cos(

n N π,且10-≤≤N n

(5) 复合函数列

)3/2sin(6.0)2sin(

9.0n N n N ππ+

(6) 矩形序列)(n R N

实验中你可以随意选择这六种输入序列中的3种作为实验内容进行实验。 五、实验报告

1、列出实验程序清单,并附上必要的程序说明。

2、记录实验结果,实验后,对结果进行分析。

实验三 用MATLAB 设计IIR 数字滤波器

一、试验目的

熟悉模拟Batterworth 滤波器设计和用双线性变换法设计数字IIR 滤波器的方法。

二、实验原理:

利用双线性变换法设计IIR 滤波器,首先要设计出满足指标要求的模拟滤波器的传递函数)(s H a ,然后由)(s H a 通过双线性变换可得所要设计的IIR 滤波器的系统函数)(z H 。如果给定的指标为数字滤波器的指标,则首先要转换成模拟域指标。

1、低通数字滤波器设计

数字域与模拟域关系

tg

=Ω (3.1)

1

1

11)()(--+-==z z s a s H z H (3.2)

2、高通数字滤波器设计

数字域与模拟域关系

ctg

-=Ω (3.3)

1

1

11)()(---+==z z s a s H z H (3.4)

3、带通数字滤波器设计

数字域与模拟域关系

1

1

0sin cos cos ωωω-=

Ωc (3.5) )

2cos()2cos(

cos 212

10ωωωωω-+=

(3.6) 1

1

cos 2202)()(-+-==z z z s a s H z H ω (3.7)

4、带阻数字滤波器设计

011

cos cos sin ωωω-=

Ωc (3.8) )

2cos()2cos(

cos 212

10ωωωωω-+=

(3.9) 1

cos 21022)()(+--=

=ωz z z s a s H z H (3.10)

模拟滤波器)(s H a 设计:

巴特沃兹滤波器的振幅平方函数)(2

ΩA 为

N

a c j H A 22

2)(11)()(ΩΩ+=

Ω=Ω (3.11)

其传输函数为

∏-=-Ω=

10

)

()(N p p

N

C

a s

s s H (3.12)

)21221(N

p j C p e

S ++Ω=π )12(,1,0-=N p (3.13)

首先确定技术指标:

(1)通带中允许的最大衰减p a 和通带截止频率p Ω; (2)阻带允许的最小衰减s a 和阻带起始频率s Ω。 由式(11)可得:

???????????

?

??Ω

Ω+=Ω=N

C

p

p a p j H a 221log 10)(1

log 10 (3.14)

???????????

?

??ΩΩ+=Ω=N

C

s s a s j H a 221log 10)(1

log 10 (3.15)

得到

10

/210

1p a N

C p =???? ??ΩΩ+ (3.16)

10

/2101s a N

C

s =???

? ??ΩΩ+ (3.17)

再利用上面两式得到

11011010/10

/--=???? ??ΩΩs p a a N

s

p

p s

ΩΩ=λ, 11011010/10/--=

s p a a k

λlog log K

N -

= (3.18)

已知s s p p a a ,,,ΩΩ,可由式(3.18)求出滤波器的阶数N 。求出的N 可能有小数部分一般取大于等于N 的最小整数。关于3dB 截止频率C Ω,有时在技术指标中给出,如果没有给出可以按照式(3.16)或式(3.17)求出。

根据以上所述,巴特沃兹滤波器的设计步骤为: (1)根据要求s s p p a a ,,,ΩΩ,由式(3.18)求出阶数N ; (2)由式(3.16)或式(5.17)求出3dB 截止频率C Ω; (3)由式(3.13)求出N 个极点; (4)由式(3.12)写出传递函数)(s H a 。

)(1

)(s B s H a =

实际设计中,第(3)、(4)两步由以下两步代替: (5)由N 可查下表,得归一化低通巴特沃兹滤波器: 阶数N 分母多项式的因式)()()()()()(54321s B s B s B s B s B s B =

1 )1(+s

2

)141421356.1(2++s s

3 )1)(1(2+++s s s

4 )184775907.1)(176536686.0(22++++s s s s

5 )1)(161803399.1)(161803399.0(22+++++s s s s s

6

)193185165.1)(141421356.1)(151763809.0(222++++++s s s s s s

(6)去归一化,即将s 用C s Ω/代替,得到实际)(s H a 。 三、实验用MATLAB 语言工具函数简介

用双线性变换法设计IIR 滤波器是IIR 滤波器设计的经典方法,首先根据模拟滤波器的指标设计出相应的模拟滤波器,然后将设计好的模拟滤波器转换成满足给定技术指标的数字滤波器。在MATLAB 的数字信号处理工具箱中提供了相应的设计函数,常用的有:

1.Butterworth 滤波器阶数选择函数

[N,Wn]=buttord(Wp,Ws,Rp,Rs)

输入参数:Wp 通带截止频率,Ws 阻带截止频率,Rp 通带最大衰减,Rs 阻带最小衰减;

输出参数:N 符合要求的滤波器最小阶数,Wn 为Butterworth 滤波器固有频率(3dB )。

2.零极点增益模型到传递函数模型的转换 [num,den]=zp2tf(Z,P,K);

输入参数:Z,P,K 分别表示零极点增益模型的零点、极点和增益; 输出参数:num,den 分别为传递函数分子和分母的多项式系数。 3.从低通向低通的转换

[b,a]=lp2lp(Bap,Aap,Wn);

功能:把模拟滤波器原型转换成截止频率为Wn 的低通滤波器。 4.双线性变换函数

[bz,az]=bilinear(b,a,Fs);

功能:把模拟滤波器的零极点模型转换为数字滤波器的零极点模型,其中Fs 是采样频率。

例3.1:用双线性变换法设计一个Butterworth 低通滤波器,要求其通带截止

频率100Hz,阻带截止频率200Hz,通带衰减p R小于2dB,阻带衰减s R大于15dB,采样频率F

=500HZ。

s

MATLAB实现程序:

%把数字滤波器参数转换成模拟滤波器参数

wp=100*2*pi; %利用

ws=200*2*pi;

Rp=2;

Rs=15;

Fs=500;

Ts=1/Fs;

%选择滤波器的最小阶数

[N,Wn]=buttord(wp,ws,Rp,Rs,'s');

%创建butterworth模拟滤波器

[Z,P,K]=buttap(N);

%把滤波器零极点模型转化为传递函数模型

[Bap,Aap]=zp2tf(Z,P,K);

%把模拟滤波器原型转换成截至频率为Wn的低通滤波器

[b,a]=lp2lp(Bap,Aap,Wn);

%用双线性变换法实现模拟滤波器到数字滤波器的转换

[bz,az]=bilinear(b,a,Fs);

%绘制频率响应曲线

[H,W]=freqz(bz,az);

plot(W*Fs/(2*pi),abs(H));

grid

xlabel('频率/Hz')

ylabel('幅度')

运行结果:

050

100150200250

0.20.40.60.811.2

1.4频率/Hz

幅度

图5.1 Butterworth 低通滤波器的频率响应

四、实验内容及要求

1、用双线性变换法设计Batterworth 低通IIR 数字滤波器,要求通带内频率低于rad π2.0时,容许幅度误差在1dB 之内,频率在rad π3.0到rad π之间的阻带衰减大与10dB 。

2、以64π

为采样间隔,在屏幕上打印出数字滤波器的频率区间],0[π上的幅频响应特性由线)

)((ωj e H 。

五、实验报告

1、列出实验程序清单,并附上必要的程序说明。

2、记录实验结果,实验后,对结果进行分析。

实验四 用窗口法设计FIR 滤波器

一、试验目的

了解一个实际滤波器设计过程,加深掌握用窗口法设计FIR 滤波器的原理和窗函数对滤波器性能的影响。 二、实验原理:

设所希望得到的滤波器的理想频率响应为)(jw

d e H 。那么FIR 滤波器的设计

就在于寻找一个传递函数

∑∞

=-=0

)()(n jwn

jw

e n h e H 去逼近)(jw

d e H 。在这种逼近中最

直接的一种方法是从单位取样响应序列)(n h 着手,使)(n h 逼近理想的单位取样

响应)(n h d 。我们知道)(n h d 可以从理想频率响应

)(jw

d e H 通过傅里叶反变换来得到,即:

?

∑=

=∞

∞=-π

π

20

)(21)()()(dw

e e H n h e n h e H jwn jw d d n jwn

d jw

d (4.1)

但是一般来说,这样得到的单位取样响应)(n h d 往往都是无限长序列;而且是非因果的。我们以一个截止频率为c w 的线性相应位理想低通为例来说明。设低通滤波器的时延为?,即:

???

?

?≤<≤=?

w w w w e e H c c jw jw d 0

)( (4.2)

dw

e n h c

c

e w w jwn jw d ?

-?=

π

21)(

)()](sin[?-?-=

n n w c π

这是一个以?为中心的偶对称的无限长非因果序列。这样一个无限长的序列怎样用一个有限长序列去近似呢?最简单的办法就是直接截取它的一段来代替它。例如把0=n 到1-=N n 的一段截取来作为)(n h ,但是为要保证所得到的是线性相

MATLAB上机指导书

MATLAB上机指导书 电子信息科学与技术专业 张焕明孙明编 佛山科学技术学院 2005年9月

目录 前言 实验一 MATLAB基础知识 1 实验二矩阵与数组 5 实验三基本操作命令 8 实验四高级操作命令 10 实验五 MATLAB的M函数编程 12

前言 MATLAB的名称源自Matrix Laboratory,是一门计算语言,它专门以矩阵的形式处理数据.MATLAB将计算与可视化集成到一个灵活的计算机环境中,并提供了大内置函数,可以在广泛的工程问题中直接利用这些函数获得数值解.此外,用MATLAB 编写程序,犹如在一张草稿纸上排列公式和求解问题一样效率高,因此被称为“演算纸式的”科学工程算法语言.在我们高等数学的学习过程中,可以结合 MATLAB 软件,做一些简单的编程应用,在一定程度上弥补我们常规教学的不足,同时,这也是我们探索高职高专数学课程改革迈出的一步.

实验一 MATLAB 基础知识 一、实验目的 1、MATLAB 的使用初步练习 2、MATLAB 的窗口组成 二、实验内容 1、掌握表达式的输入方法 2、MATLAB 的常量及其表示方法 3、分号、百分比号、逗号及省略号的用法 4、向量和矩阵的处理方式;常用的数学函数;搜索路径的概念;MATLAB 的帮 助功能。 三、实验仪器、设备和材料 1、微型计算机,能正常运行Matlab 6.0或以上版本 2、Matlab6.0或以上版本 四、实验原理 略(参考教材的相关部分) 五、实验步骤 1、MATLAB 文件的编辑、存储和执行 MATLAB 提供了两种运行方式,即命令行和M 文件方式. A .命令行方式 直接在命令窗口输入命令来实现计算或作图功能. 例如,若要求表达式 9 .248.26107 sin 369.12÷?+π的值,我们可在MATLAB 命令窗口中键入下面的命令: >> 1.369^2+sin(7/10*pi)*sqrt(26.48)/2.9 (回车) 观测运行结果并解释原因 也可将计算的结果赋给某一个变量,例如输入 : >> a=1.369^2+sin(7/10*pi)*sqrt(26.48)/2.9 (回车) 观测运行结果并解释原因 B .M 文件的运行方式 1)文件编辑 在MATLAB 窗口中单击File 菜单依次选择NewM-File,打开M 文件输入运行界面,如下图所示。此时屏幕上会出现所需的窗口,在该窗口中输入程序文件,可以进行调试和运行.与命令行方式相比,M 文件方式的优点是可以调试,可重复应用. 2)文件存储 单击File 菜单,选择Save 选项,可将自己所编写的程序存在一个后缀为m 的文件中. 3)运行程序 在M 文件窗口中选择Debug 菜单中的run 选项,即可运行此M 文件;也可在MATLAB 命令窗口中直接输入所要执行的文件名后回车即可.但需要的是该程序文件必须存在MATLAB 默认的路径下.用户可以在MATLAB 窗口中单击File 菜单选择Set Path 将要执行的文件所在的路径添加到MATLAB 默认的路径序列中. 2、MATLAB 基本运算符及表达式 表1-1 基本运算符

数字信号处理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) (1)生成一个4×4的随机矩阵,求该矩阵的特征值和特征向量。程序: A=rand(4) [L,D]=eig(A) 结果: A = 0.9501 0.8913 0.8214 0.9218 0.2311 0.7621 0.4447 0.7382 0.6068 0.4565 0.6154 0.1763 0.4860 0.0185 0.7919 0.4057 L = -0.7412 -0.2729 - 0.1338i -0.2729 + 0.1338i -0.5413 -0.3955 -0.2609 - 0.4421i -0.2609 + 0.4421i 0.5416 -0.4062 -0.0833 + 0.4672i -0.0833 - 0.4672i 0.4276 -0.3595 0.6472 0.6472 -0.4804 D = 2.3230 0 0 0 0 0.0914 + 0.4586i 0 0 0 0 0.0914 - 0.4586i 0 0 0 0 0.2275 (2)给出一系列的a值,采用函数 22 22 1 25 x y a a += - 画一组椭圆。 程序: a=0.5:0.5:4.5; % a的绝对值不能大于5 t=[0:pi/50:2*pi]'; % 用参数t表示椭圆方程 X=cos(t)*a; Y=sin(t)*sqrt(25-a.^2); plot(X,Y) 结果: (3)X=[9,2,-3,-6,7,-2,1,7,4,-6,8,4,0,-2], (a)写出计算其负元素个数的程序。程序: X=[9,2,-3,-6,7,-2,1,7,4,-6,8,4,0,-2]; L=X<0; A=sum(L) 结果: A =

数字信号处理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; 运行结果:

实验1熟悉matlab环境和基本操作

实验1 熟悉Matlb环境及基本操作 实验目的: 1.熟悉Matlab环境,掌握Matlab的主要窗口及功能; 2.学会Matlab的帮助使用; 3.掌握向量、矩阵的定义、生成方法和基本运算; 4.掌握Matlab的基本符号运算; 5.掌握Matlab中的二维图形的绘制和控制。 实验内容: 1.启动Matlab,说明主窗口、命令窗口、当前目录窗口、工作空间窗口、历史窗口、图形窗口、M文件编辑器窗口的功能。 2.实例操作Matlab的帮助使用。 3.实例操作向量、矩阵的定义、生成方法和基本运算。 4.实例操作Matlab的基本符号运算。 5.实例操作Matlab中的二维图形绘制和控制。 实验仪器与软件: 1.CPU主频在2GHz以上,内存在512Mb以上的PC; 2.Matlab 7及以上版本。 实验讲评: 实验成绩: 评阅教师: 年月日

实验1 熟悉Matlab环境及基本操作 一、Matlab环境及主要窗口的功能 运行Matlab安装目录下的matlab.exe文件可启动Matlab环境,其默认布局如下图: 其中, 1.主窗口的功能是:主窗口不能进行任何计算任务操作,只用来进行一些整体的环境参数设置,它主要对6个下拉菜单的各项和10个按钮逐一解脱。 2.命令窗口的功能是:对MATLAB搜索路径中的每一个M文件的注释区的第一行进行扫描,一旦发现此行中含有所查询的字符串,则将该函数名及第一行注释全部显示在屏幕上。 3. 历史窗口的功能是:历史窗口显示命令窗口中的所有执行过的命令,一方面可以查看曾经执行过的命令,另一方面也可以重复利用原来输入的命令行,可以从命令窗口中直接通过双击某个命令行来执行该命令,

南京理工大学数字信号处理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');

实验一 基于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基本操作及运算

实验一 MATLAB 基本操作及运算 一、 实验目的 二、 实验的设备及条件 三、 实验内容 1、 建立以下标量: 1) a=3 2) ,(j 为虚数单位) 3) c=3/2πj e 2、 建立以下向量: 1) Vb= 2.71382882????????-???? 2) Vc=[4 3.8 … -3.8 -4 ] (向量中的数值从4到-4,步长为-0.2) 3、 建立以下矩阵: 1) 3 333Ma ????=?????? Ma 为一个7×7的矩阵,其元素全为3. 2) 11191212921020100Mb ??????=??????

Mb 为一个10×10的矩阵. 3) 114525173238Mc ????=?????? 4、 使用题1中的变量计算下列等式的x,y,z 的值: 1) ((15)/6)111a x e --=+ 2) 2x π= 3) 3ln([()()]sin(/3))x b c b c a π=+-R ,其中R 表示复数实部。 5、 求解函数值22/(2.25)ct y e -=,其中c 取值见题1,t 的取值范围为题2中行 向量Vc 。 6、 使用题1和题3中所产生的标量和矩阵计算等式 1()()T Mx a Mc Mc Mc -=?? 其中*为矩阵所对应行列式的值,参考det 。 7、 函数的使用和矩阵的访问。 1) 计算矩阵Mb 每一列的和,结果应为行向量形式。 2) 计算整个矩阵Mb 的平均值。 3) 用向量[1 1…1] 替换Mb 的最上一行的值 4) 将矩阵Mb 的第2~5行,第3到9列的元素所构成的矩阵赋值给矩阵SubMb 。 5) 删除矩阵Mb 的第一行; 6) 使用函数rand 产生一个1×10的向量r ,并将r 中值小于0.5的元素设置为0。 8、 已知CellA (1, 1)=‘中国’,CellA (1,2)=‘北京’,CellA (2,1)是一个3乘3的单位阵,CellA (2, 2)=[1 2 3],试用MATLAB 创建一个2×2的细胞数组CellA 。 9、 已知结构数组student 中信息包含有姓名,学号,性别,年龄和班级,试用MATLAB 创建相应的结构数组student 。该数组包含有从自己学号开始连续5个同学的信息(如果学号在你后面的同学不足5个则往前排序),创建完成后查看自己的信息。

MATLAB上机答案

一熟悉Matlab工作环境 1、熟悉Matlab的5个基本窗口 思考题: (1)变量如何声明,变量名须遵守什么规则、是否区分大小写。 答:变量一般不需事先对变量的数据类型进行声明,系统会依据变量被赋值的类型自动进行类型识别,也就是说变量可以直接赋值而不用提前声明。变量名要遵守以下几条规则: 变量名必须以字母开头,只能由字母、数字或下划线组成。 变量名区分大小写。 变量名不能超过63个字符。 关键字不能作为变量名。 最好不要用特殊常量作为变量名。 (2)试说明分号、逗号、冒号的用法。 分号:分隔不想显示计算结果的各语句;矩阵行与行的分隔符。 逗号:分隔欲显示计算结果的各语句;变量分隔符;矩阵一行中各元素间的分隔符。 冒号:用于生成一维数值数组;表示一维数组的全部元素或多维数组某一维的全部元素。 (3)linspace()称为“线性等分”函数,说明它的用法。 LINSPACE Linearly spaced vector.线性等分函数 LINSPACE(X1,X2)generates a row vector of100linearly equally spaced points between X1and X2. 以X1为首元素,X2为末元素平均生成100个元素的行向量。 LINSPACE(X1,X2,N)generates N points between X1and X2. For N<2,LINSPACE returns X2. 以X1为首元素,X2为末元素平均生成n个元素的行向量。如果n<2,返回X2。 Class support for inputs X1,X2: float:double,single 数据类型:单精度、双精度浮点型。 (4)说明函数ones()、zeros()、eye()的用法。 ones()生成全1矩阵。 zeros()生成全0矩阵。 eye()生成单位矩阵。 2、Matlab的数值显示格式

数字信号处理指导书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基本操作(2016)

实验一 MATLAB 基本操作 一、实验目的 1. 学习和掌握MA TLAB 的基本操作方法 2. 掌握命令窗口的使用 3. 熟悉MATLAB 的数据表示、基本运算 二、实验内容和要求 1. 实验内容 1) 练习MATLAB7.0或以上版本 2) 练习矩阵运算与数组运算 2. 实验要求 1) 每位学生独立完成,交实验报告 2) 禁止玩游戏! 三、实验主要软件平台 装有MATLAB7.0或以上的PC 机一台 四、实验方法、步骤及结果测试 1. 实验方法:上机练习。 2. 实验步骤: 1) 开启PC ,进入MA TLAB 。 2) 使用帮助命令,查找sqrt 函数的使用方法 答: help sqrt 3) 矩阵、数组运算 a) 已知 ??????????=987654321A ,???? ??????=963852741B ,求)2()(A B B A -?+ 答: A=[1, 2, 3; 4, 5, 6; 7, 8, 9]; B=[1, 4, 7; 2, 5, 8; 3, 6, 9]; (A+B)*(2*B-A) b) 已知?? ????-=33.1x ,??????=π24y ,求T xy ,y x T c) 已知??????????=987654321A ,???? ??????=300020001B ,求A/B, A\B. d) 已知???? ??????=987654321A ,求:(1) A 中第三列前两个元素;(2) A 中所有第二行元素;(3) A 中四个角上的元素;(4) 交换A 的第1、3列。(5) 交换A 的第1、2行。(6) 删除A 的第3列。

e) 已知[]321=x ,[]654=y ,求:y x *.,y x /.,y x \.,y x .^, 2.^x ,x .^2。 f) 给出x=1,2,…,7时,x x sin 的值。 3)常用的数学函数 a )随机产生一个3x3的矩阵A ,求:(1) A 每一行的最大、最小值,以及最大、最小值所在的列;(2) A 每一列的最大、最小值,以及最大、最小值所在的行;(3) 整个矩阵的最大、最小值;(4) 每行元素之和;(5) 每列元素之和;(6) 每行元素之积;(7) 每列元素之积。 b) 随机产生两个10个元素的向量x ,y 。(1) 求x 的平均值、标准方差。(2) 求x ,y 的相关系数。(3)对x 排序,并记录排序后元素在原向量中的位置。 4) 字符串操作函数 建立一个字符串向量(如‘ABc123d4e56Fg9’),然后对该向量做如下处理: (1) 取第1~5个字符组成的子字符串。 (2) 将字符串倒过来重新排列。 (3) 将字符串中的小写字母变成相应的大写字母,其余字符不变。 (4) 统计字符串中小写字母的个数。

MATLAB上机考试题(一)

(1)在MATLAB的命令窗口中执行_____命令,将命令窗口的显示内容清空。() A.clear B.clc C.echo off D.cd (2)在MATLAB的命令窗口中执行_____命令,使数据输出显示为十六进制表示。() A.format long B.format rat C.format hex D.format short e (3)下列变量名中_____是合法的。() A.x*y,a,1 B.x\y,a1234 C.end,1 bcx D.char_1,i,j (4)已知x=0:5,则x有_____个元素。() A.5 B.6 C.7 D.8 (5)一下运算符中哪个的优先级最高_____。() A./ B.^ C.~= D.& (6)使用检测函数isnumeric(10)的结果是_____。() A.1 B.0 C.false D.true (7)三维图形中默认视角是_____度。() A.方位角=0 俯仰角=90 B.方位角=90 俯仰角=0 C.方位角=37.5 仰俯角=30 D.方位角=0 仰俯角=180 (8)将符号表达式化简为因式分解因式分解因式分解因式分解形式,使用_____函数。() A.collect B.expand C.horner D.factor (9)运行以下命令,则_____描述是正确的。()>>syms a b c d >>A=[a b;c d] A.A占用的内存小于100B B.创建了5个符号变量 C.A占用的内存是a b c d的总和 D.不存在 (10)已知数组a=[1 2 3;4 5 6;7 8 9],则a(:,end)是指_____元素。 (11)运行命令bitor(8,7)的结果是_____。 (12)运行以下命令: >>x=0:10; >>y1=sin(x); >>y2=5*sin(x); >>y3=[10*sin(x );20*sin(x)]; >>plot(x,y1,x,y2,x,y3) 则在一个图形窗口中,可以看到_____条曲线。 (13)符号表达式“g=sym(sin(a*z)+cos(w*v))”中的自由符号变量是_____。 (14)运行以下命令: >>syms t >>f1=1/t >>limitf1_r=limit(f1,'t','0','right'); 则函数limitf1_r趋向0的右极限为_____。 15.在MATLAB的命令窗口中执行______命令,使数值5.3显示为5.300000000000000e+000 A. format long B. format long e C. format short D. format short e 16.下列变量名中______是合法的。A.char_1,i,j B.1_1, a.1 C.x\y,a1234 D.end,1bcx 17.已知x=0:9,则x有_____个元素。 A.12 B.11 C.10 D.9 18.产生对角线上为全1其余为0的2行3列矩阵的命令是______ A. ones(2,3) B. ones(3,2) C. eye(2,3) D. eye(3,2) 19.已知数组a= [1 2 3 4 5 6 7 8 9] ,则运行a(:,1)=[]命令后______ A. a变成行向量 B. a数组为2行2列 C. a 数组为3行2列 D. a数组中没有元素3 20.按含义选出各个函数名:表示4舍5入到整数的是____,表示向最接近0取整的是____,表示向最接近-∞取整的是____,表示向最接近∞取整的是_____ A. round(x) B. fix(x) C. floor(x) D. ceil(x) 21.已知a=0:5,b=1:6,下面的运算表达式出错的为______ A. a+b B. a./b C. a’*b D. a*b 22.已知s=’显示”hello”’,则s的元素个数是______ A. 12 B. 9 C. 7 D.18

数字信号处理的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);

Matlab 上机题及答案

1 一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数。 for m=100:999 m1=fix(m/100); %求m的百位数字 m2=rem(fix(m/10),10); %求m的十位数字 m3=rem(m,10); %求m的个位数字 if m==m1*m1*m1+m2*m2*m2+m3*m3*m3 disp(m) end end 2.从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。 sum=0; n=0; val=input('Enter a number (end in 0):'); while (val~=0) sum=sum+val; n=n+1; val=input('Enter a number (end in 0):'); end if (n > 0) sum mean=sum/n end 3. 若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。求[1,500]之间的全部完数。 for m=1:500 s=0; for k=1:m/2 if rem(m,k)==0 s=s+k; end end if m==s disp(m); end end 4. 从键盘上输入数字星期,在屏幕上显示对应英文星期的单词。 function week n=input('input the number:'); if isempty(n) errror('please input !!')

end if n>7|n<1 error('n between 1 and 7') end switch n case 1 disp('Monday') case 2 disp('Tuesday') case 3 disp('Wednesday') case 4 disp('Thursday') case 5 disp('Friday') case 6 disp('Saturday') case 7 disp('Sunday') end 5. 某公司销售电脑打印机的价格方案如下: ()如果顾客只买一台打印机,则一台的基本价格为$150。 ()如果顾客购买两台以上打印机,则第二台价格为$120。 ()第三台以后,每台$110。 写一段程序分别计算出购买1--10台打印机所需的钱数。打印机台数可以在程序开始处指定,或通过input命令读入。运行程序,计算出购买10台打印机的总价格。 写出程序,生成分别购买1--10台打印机所需价格的图表(使用fprintf命令输出图表,不允许手算)。 x=input('请输入购买的打印机台数:'); for m=1:x if m<=1 y(m)=150*m; elseif m<=2 y(m)=150+120*(m-1); else y(m)=150+120+110*(m-2); y(1,m)=y(m); end end y(x) plot(1:m,y,'r*--')

数字信号处理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实现

数字信号处理(第二版) 绪论 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的数字信号处理

数字信号处理课程设计报告题目:语音数字信号处理与分析及 Matlab实现 系别通信工程 专业班级 学生姓名 学号 指导教师 提交日期

摘要 本次课程设计综合利用数字信号处理的理论知识进行语音信号的频谱分析,通过理论推导得出相应结论,再利用MATLAB作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。本次课程设计要求利用MATLAB对语音信号进行分析和处理,要求学生采集语音信号后,在MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。待处理语音信号是一个在20Hz~20kHz 频段的低频信号。采用了高效快捷的开发工具——MATLAB,实现了语音信号的采集,对语音信号加噪声及设计滤波器滤除噪声的一系列工作。利用采样原理设计了高通滤波器、低通滤波器、带通滤波器、带阻滤波器。同学通过查阅资料自己获得程序进行滤波器的设计,能过得到很好的锻炼。 关键词:MATLAB滤波器数字信号处理

目录 第一章绪论 (1) 1.1设计的目的及意义 (1) 1.2设计要求 (1) 1.3设计内容 (1) 第二章系统方案论证 (3) 2.1设计方案分析 (3) 2.2实验原理 (3) 第三章信号频谱分析 (6) 3.1原始信号及频谱分析 (6) 3.2加入干扰噪声后的信号及频谱分析 (7) 第四章数字滤波器的设计与实现 (11) 4.1高通滤波器的设计 (11) 4.2低通滤波器的设计 (12) 4.3带通滤波器的设计 (15) 4.4带阻滤波器的设计 (16) 第五章课程设计总结 (19) 参考文献 (20) 附录Ⅰ..................................................................................I 附录Ⅱ................................................................................II

相关主题
文本预览
相关文档 最新文档