48MATLAB语言在DSP设计中的应用.docx

上传人:b****8 文档编号:10946375 上传时间:2023-02-23 格式:DOCX 页数:40 大小:244.92KB
下载 相关 举报
48MATLAB语言在DSP设计中的应用.docx_第1页
第1页 / 共40页
48MATLAB语言在DSP设计中的应用.docx_第2页
第2页 / 共40页
48MATLAB语言在DSP设计中的应用.docx_第3页
第3页 / 共40页
48MATLAB语言在DSP设计中的应用.docx_第4页
第4页 / 共40页
48MATLAB语言在DSP设计中的应用.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

48MATLAB语言在DSP设计中的应用.docx

《48MATLAB语言在DSP设计中的应用.docx》由会员分享,可在线阅读,更多相关《48MATLAB语言在DSP设计中的应用.docx(40页珍藏版)》请在冰豆网上搜索。

48MATLAB语言在DSP设计中的应用.docx

48MATLAB语言在DSP设计中的应用

MATLAB语言在DSP设计中的应用

随着计算机技术的高速发展,计算机语言也得到了迅速发展。

我们熟知的BASIC、FORTRAN、C等广泛地应用于各种场合。

但从工程计算和图形显示的角度,这些语言并不方便。

1984年,美国Mathworks公司正式推出了MATLAB语言。

MATLAB是“矩阵实验室”(MATrixLABoratoy)的缩写,是一种科学计算软件,主要适用于控制和信息处理领域的分析设计。

它是一种以矩阵运算为基础的交互式程序语言,能够满足工程计算和绘图的需求。

与其它计算机语言相比,其特点是简洁和智能化,适应科技专业人员的思维方式和书写习惯,使得编程和调试效率大大提高,并且很容易由用户自行扩展。

因此,当前已成为美国和其它发达国家大学教学和科学研究中必不可少的工具。

MATLAB语言自1988年推出3.x(DOS)版本,目前已出了4.x,5.x,6.x等(Windows)版本。

随着版本的升级,内容不断扩充。

§1 MATLAB的工作环境

MATLAB的工作环境主要由命令窗(CommandWindows)、文本编辑器(FileEditor)、若干个图形窗(FigureWindows)及文件管理器组成。

MATLAB视窗采用了WINDOWS视窗风格(如图5-1-1)。

各视窗之间的切换可用快捷键Alt+Tab。

图5-1-1MATLAB的命令窗、文本编辑窗和图形窗

使用MATLAB4.x以上的版本,可在WINDOWS主界面上直接点击MATLAB图标,进入MATLAB命令窗口。

在MATLAB命令窗下键入一条命令,按Enter键,该指令就被立即执行并显示结果。

   

如果一个程序稍复杂一些,则需要采用文件方式,把程序写成一个由多条语句构成的文件。

这时就需要用到文本编辑器。

建立一个新文件,应在MATLAB命令窗口下点击空白文档符号或在File菜单下点击New,将打开MATLAB文本编辑器窗口,显示一个空白的文档。

对已经存在的文件,则点击打开文件或在File菜单下点击Open,会自动进入文件选择窗口,找到文件后点亮并打开即可进入MATLAB文本编辑器窗口。

在MATLAB文本编辑器窗口中建立的文件默认为.m文件。

如果要建立的文件是M函数文件,即希望被其它程序象MATLAB中的库函数那样被调用,则文件的第一句应是函数申明行,如:

function[y,w]=XYZ(x,t)

式中,function为MATLAB关键字,[]放置输出宗量,()中放置输入宗量,XYZ为函数名。

当其它程序调用该函数时,只需在程序中直接使用function关键字后面的部分。

函数申明行是M函数文件必不可少的一部分。

程序执行的结果以图形方式显示时,将自动打开图形窗。

在程序中,图形窗命令为figure。

MATLAB允许打开多个图形窗。

如果程序中对图形窗没有编号,将按程序执行的顺序自动给图形窗编号。

在MATLAB命令窗下,还具有许多文件管理的功能。

例如,我们自己编写的文件放在一个专门的文件夹中,则需要将这个文件夹的路径存盘。

否则,这个文件夹中的文件将不能在MATLAB环境下执行。

在MATLAB命令窗口File下选setPath,将打开一个路径设置窗口。

在这个窗口的Path菜单下选AddtoPath,找到需要的文件夹,列入MATLAB路径,然后在File菜单下SavePath即可。

MATLAB提供了许多演示程序供使用者参考学习。

在MATLAB命令窗下键入demo,将出现MATLAB演示图形窗。

使用者可根据提示进行操作。

通常画面的上半部是图形,下半部是相应的MATLAB程序语句。

使用者可以在界面上直接修改其中的程序语句并执行,观察其结果。

因此demo是一个很好的学习辅助手段。

MATLAB语言支持使用DOS命令。

在MATLAB命令窗下执行DOS命令,只需在原DOS命令前加!

(惊叹号),回车后将直接执行该命令。

在用MATLAB语言编写的程序中也可以直接使用!

加DOS命令,作为一条MATLAB程序来执行。

 

§2 MATLAB的基本语法

在MATLAB中,变量和常量的标识符最长允许19个字符,标识符中第一个字符必须是英文字母。

MATLAB区分大小写,默认状态下,A和a被认为是两个不同的字符。

一、数组和矩阵

(一)数组的赋值

数组是指一组实数或复数排成的长方阵列。

它可以是一维的“行”或“列”,可以是二维的“矩形”,也可以是三维的甚至更高的维数。

在MATLAB中的变量和常量都代表数组,赋值语句的一般形式为

变量=表达式(或数)

如键入a=[123;456;789]则将显示结果:

a=

123

456

789

如键入X=[-3.5sin(6*pi)8/5*(3+4)sqrt

(2)]则将显示:

X=

-3.5000-0.000011.20001.4142

数组放置在[]中;数组元素用空格或逗号“,”分隔;数组行用分号“;”或“回车”隔离。

(二)复数

MATLAB中的每一个元素都可以是复数,实数是复数的特例。

复数的虚部用i或j表示。

复数的赋值形式有两种:

z=[1+1i,2+2i;3+3i,4+4i]

z=[1,2;3,4]+[1,2;3,4]*i

得z=1.000+1.000i2.000+2.000i

3.000+3.000i4.000+4.000i

以上两式结果相同。

注意,在第二式中“*”不能省略。

在复数运算中,有几个运算符是常用的。

运算符“′”表示把矩阵作共轭转置,即把矩阵的行列互换,同时把各元素的虚部反号。

函数conj表示只把各元素的虚部反号,即只取共轭。

若想求转置而不要共轭,就把conj和“′”结合起来完成。

例如键入

w=z′,u=conj(z),v=conj(z)′

可得w=1.000-1.000i3.000-3.000i

2.000-2.000i4.000-4.000i

u=1.000-1.000i2.000-2.000i

3.000-3.000i4.000-4.000i

v=1.000+1.000i3.000+3.000i

2.000+2.000i4.000+4.000i

(三)数组寻访和赋值的格式

表M-1常用子数组的寻访、赋值格式

子数组的寻访

和赋值

使用说明

a(r,c)

由a的“r指定行”和“c指定列”上的元素组成的子数组

a(r,:

由a的“r指定行”和“全部列”上的元素组成的子数组

a(:

,c)

由a的“全部行”和“c指定列”上的元素组成的子数组

a(:

由a的各列按自左到右的次序,首尾相接而生成“一维长列”数组

a(s)

“单下标”寻访。

生成“s指定的”一维数组。

s若是“行数组”(或“列数组”),则a(s)就是长度相同的“行数组”(或“列数组”)

例:

a=[123;456;789];

键入a(1,2)显示:

ans=

2

键入a(2,:

)显示:

ans=

456

键入a(:

3)显示:

ans=

3

6

9

其它情况读者可以自行上机观察使用,此处不再一一举例。

(四)执行数组运算的常用函数

表M-2三角函数和双曲函数

名称

含义

名称

含义

名称

含义

acos

反余弦

asinh

反双曲正弦

csch

双曲余割

acosh

反双曲余弦

atan

反正切

sec

正割

acot

反余切

atan2

四象限反正切

sech

双曲正割

acoth

反双曲余切

atanh

反双曲正切

sin

正弦

acsc

反余割

cos

余弦

sinh

双曲正弦

acsch

反双曲余割

cosh

双曲余弦

tan

正切

asec

反正割

cot

余切

tanh

双曲正切

asech

反双曲正割

coth

双曲余切

asin

反正弦

csc

余割

表M-3指数函数

名称

含义

名称

含义

名称

含义

exp

指数

log10

常用对数

pow2

2的幂

log

自然对数

log2

以2为底的对数

sqrt

平方根

说明:

表M-3、表M-4的使用形式与其它语言相似。

X=tan(60),Y=20*log(U/0.775),Z=1-exp(-1.5*t)。

表M-4复数函数

名称

含义

名称

含义

名称

含义

abs

模,或绝对值

conj

复数共轭

real

复数实部

angle

相角(弧度)

imag

复数虚部

例:

已知h=a+jb,a=3,b=4,求h的模。

输入:

a=3

b=4

h=a+b*j

abs(h)

将显示:

ans=

5

键入:

angle(h)

将显示:

ans=

1.9273

键入:

real(h)

将显示:

ans=

3

键入:

imag(h)

则显示:

ans=

4

表M-5取整函数和求余函数

名称

含义

名称

含义

ceil

向+∞舍入为整数

rem(a,b)

a整除b,求余数

fix

向0舍入为整数

round

四舍五入为整数

floor

向-∞舍入为整数

sign

符号函数

mod(x,m)

x整除m取正余数

例:

键入ceil(1.45)

显示:

ans=

2

键入:

fix(1.45)

显示:

ans=

1

键入:

floor(-1.45)

显示:

ans=

-2

键入:

round(1.45)

显示:

ans=

1

键入:

round(1.62)

显示:

ans=

2

键入:

mod(-55,7)

显示:

ans=

1

键入:

rem(-55,7)

显示:

ans=

-6

(五)基本赋值数组

表M-6常用基本数组和数组运算

基本数组

zeros

全零数组(m×n阶)

logspace

对数均分向量(1×n阶数组)

ones

全么数组(m×n阶)

freqspace

频率特性的频率区间

rand

随机数数组(m×n阶)

meshgrid

画三阶曲面时的X,Y网格

randn

正态随机数数组(m×n阶)

linspace

均分向量(1×n阶数组)

eye(n)

单位数组(方阵)

将元素按列取出排成一列

特殊变量和函数

ans

最近的答案

Inf

Infinity(无穷大)

eps

浮点数相对精度

NaN

Not-a-Number(非数)

realmax

最大浮点实数

flops

浮点运算次数

realmin

最小浮点实数

computer

计算机类型

pi

3.14159235358579

inputname*

输入变量名

i,j

虚数单位

size

多维数组的各维长度

length

一维数组的长度

为便于大量赋值,MATLAB提供了一些基本数组。

举例说明:

A=ones(2,3),B=zeros(2,4),C=eye(3)

得A=111B=0000C=100

1110000010

001

线性分割函数linespace(a,b,n)在a和b之间均匀地产生n个点值,形成1×n元向量。

D=linspace(0,1,5)

得D=00.25000.50000.75001.0000

(六)数组运算和矩阵运算

MATLAB中最基本的运算是矩阵运算。

但是在MATLAB的运用中,大量使用的是数组运算。

从外观形状和数据结构上看,二维数组和(数学中的)矩阵没有区别。

但是,矩阵作为一种变换或映射算子的体现,其运算有着明确而严格的数学规则。

而数组运算是MATLAB软件所定义的规则,其目的是为了数据管理方便、操作简单、指令形式自然简便以及执行计算有效。

虽然数组运算尚缺乏严谨的数学推理,数组运算本身仍在完善和成熟中,但它的作用和影响正随着MATLAB的发展而扩大。

为更清晰地表述数组运算与矩阵运算的区别,我们以表M-7叙述各数组运算指令的意义。

其中假定S=2,n=3,P=1.5。

A=[123;456;789],

B=[234;567;891]。

表M-7举例说明数组运算指令的意义

指令

含义

运算结果

s+A

标量s分别与A元素之和

345

678

91011

A-s

A分别与标量s的元素之差

-101

234

567

s.*A

标量s分别与A的元素之积

246

81012

141618

s./A或

A.\s

s分别被A的元素除

2.00001.00000.6667

0.50000.40000.3333

0.28570.25000.2222

A.^n

A的每个元素自乘n次

1827

64125216

343512729

p.^A

以p为底,分别以A的元素为指数

求幂值

1.50002.25003.3750

5.06257.593811.3906

17.085925.628938.4434

A+B

对应元素相加

357

91113

151710

A-B

对应元素相减

-1-1-1

-1-1-1

-1-18

A.*B

对应元素相乘

2612

203042

56729

A./B或B.\A

A的元素被B的对应元素除

0.50000.66670.7500

0.80000.83330.8571

0.87500.88899.0000

exp(A)

以自然数e为底,分别以A的元素为指数,求幂

1.0e+003*

0.00270.00740.0201

0.05460.14840.4034

1.09662.98108.1031

log(A)

对A的各元素求对数

00.69311.0986

1.38631.60941.7918

1.94592.07942.1972

sqrt(A)

对A的各元素求平方根

1.00001.41421.7321

2.00002.23612.4495

2.64582.82843.0000

例:

有一函数X(t)=tsin3t,在MATLAB程序中如何表示?

解:

X=t.*sin(3*t)

例:

有一函数X(t)=sin3t/3t,在MATLAB程序中如何表示?

解:

X=sin(3*t)./(3*t)

二、逻辑判断与流程控制

(一)关系运算

关系运算是指两个元素之间数值的比较,一共有六种可能。

如表M-8所列。

关系运算的结果只有两种可能,即0或1。

0表示该关系式为“假”,1表示该关系式为“真”。

例1:

A=3+4==7,得A=1。

例2:

已知N=0,B=[N==0],得B=1。

若N=2,B=[N==0],得B=0。

表M-8关系运算符

指令

含义

指令

含义

<

小于

>=

大于等于

<=

小于等于

==

等于

>

大于

~=

不等于

(二)逻辑运算

逻辑量的基本运算为“与(&)”、“或(∣)”、“非(~)”三种,另外还可以用“异或(xor)”,如表M-9所示。

表M-9逻辑运算符

运算

A=0

A=1

B=0

B=1

B=0

B=1

A&B

0

0

0

1

A|B

0

1

1

1

~A

1

1

0

0

xor(A,B)

0

1

1

0

(三)基本的流程控制语句

⑴if条件执行语句

格式:

if表达式语句,end

if表达式1语句组A,else语句组B,end

if表达式1语句组A,elseif表达式2语句组B,else语句组C,end

执行到该语句时,计算机先检验if后的逻辑表达式,为1则执行语句A;如为0则跳过A检验下一句程序,直到遇见end,执行end后面的一条语句。

例:

ifn<=2

x=2;

elseifn>3

x=3;

end

若n=5,则结果

x=

3

⑵while循环语句

格式:

while表达式语句组A,end

执行到该语句时,计算机先检验while后的逻辑表达式,为1则执行语句A;到end处,它就跳回到while的入口,再检验表达式,如仍为1则再执行语句A,直到结果为0,就跳过语句组A,直接执行end后面的一条语句。

例:

whilek<=1000

k=k+1;

end

键入k将显示

k=

1001

⑶for循环语句

格式:

fork=初值:

增量:

终值语句组A,end

将语句组A重复执行N次,但每次执行时程序中k值不同。

增量缺省值为1。

例:

y=0;

fork=1:

20

y=y+k;

end

键入y将显示

y=

210

⑷switch多分支语句

格式:

switch表达式(标量或字符串)

case值1

语句组A

case值2

语句组B

……………

otherwise

语句组N

end

当表达式的值与某case语句中的值相同时,它就执行该case语句后的语句组,然后直接跳到终点的end处。

三、基本绘图方法

(一)二维图形函数

MATLAB语言支持二维和三维图形,这里我们主要介绍常用的二维图形函数。

如表M-11所示。

表M-11常用图形函数库

基本X—Y图形

plot

线性X-Y座标绘图

polar

极座标绘图

loglog

双对数X-Y座标绘图

plotyy

用左、右两种Y座标画图

semilogx

半对数X座标绘图

semilogy.

半对数Y座标绘图

stem

绘制脉冲图

stairs

绘制阶梯图

bar

绘制条形图

坐标控制

axis

控制座标轴比例和外观

subplot

按平铺位置建立子图轴系

hold

保持当前图形

图形注释

title

标出图名(适用于三维图形)

gtext

用鼠标定位文字

xlabel

X轴标注(适用于三维图形)

legend

标注图例

ylabel

Y轴标注(适用于三维图形)

grid

图上加座标网格(适用于三维)

text

在图上标文字(适用于三维)

打印

print

打印图形或把图存为文件

orient

设定打印纸方向

printopt

打印机默认选项

常用的三维曲线绘图命令

Plot3

在三维空间画点和线

mesh

三维网格图

fill3

在三维空间绘制填充多边形

surf

三维曲面图

最常用的命令使用说明:

plot(t,y)表示用线性X-Y座标绘图,X轴的变量为t,Y轴的变量为y。

subplot(2,2,1)建立2×2子图轴系,并选定图1。

axis([01-0.11.2])表示建立一个座标,横座标的范围从0至1,纵座标的范围从-0.1至1.2。

title('X(n)曲线')在子图上端标注图名

作图时,线形、点形和颜色的选择可参考表M-12。

表M-12线形、点形和颜色

标志符

b

c

g

k

m

r

w

y

颜色

绿

品红

标志符

×

-.

线、点

圆圈

×号

+号

实线

星号

点线

点划线

虚线

(二)举例

以下举例说明二维图形函数在程序中的使用方法。

例1:

作一条曲线

,程序如下。

t=0:

0.5:

4*pi;%将t在0到4π间每间隔0.5取一点

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

subplot(2,2,1),plot(t,y);%建立2×2子图轴系,在图1处绘线性图

title('plot(t,y)');%标注图名

subplot(2,2,2),stem(t,y);%在2×2子图轴系图2处绘脉冲图

title('stem(t,y)');

subplot(2,2,3),stairs(t,y);%在2×2子图轴系图3处绘阶梯图

title('stairs(t,y)');

subplot(2,2,4),bar(t,y);%在2×2子图轴系图2处绘条形图

title('bar(t,y)');

例2:

已知

在同一座标系对两条曲线作图,用不同的颜色和线型区分。

方法一:

将同时显示曲线的向量列入数组,t必须等长。

显示的线型和颜色不能任意选择。

t=0:

0.01:

2;

y1=sin(2*pi*t);

y2=cos(4*pi*t);

plot(t,[y1;y2]);

图M-1例2方法一

方法二:

显示曲线的向量t不必等长,显示的线型和颜色能任意选择。

作图时,先画第一条曲线保持住,再画第二条曲线。

图M-2例2方法二

t1=0:

0.01:

1;

y1=sin(2*pi*t1);

t2=0:

0.01:

2

y2=cos(4*pi*t2);

plot(t1,y1,'*m'),hold;%让第一条曲线保持住,再画第二条曲线

plot(t2,y2,'+b');

 

§3 MATLAB在信号处理中常用的函数

MATLAB系统软件中具有专用的信号处理工具箱,对于我们学习信号与系统、数字信号处理等课程,进行通信、电子工程设计计算是一个非常有效的辅助手段。

这里,我们仅列写出最常用的部分,供大家参考。

一、常用的信号及信号的波形

(一)常用的信号

在MATLAB中的信号处理工具箱中,主要提供的信号是离散信号。

由于MATLAB对下标的约定为从1开始递增,例如x=[5,4,3,2,1,0],表示x

(1)=5,x

(2)=4,X(3)=3…

因此要表示一个下标不由1开始的数组x(n),一般应采用两个矢量,如

n=[-3,-2,-

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1