设计性实验(MATLAB仿真实验)

设计性实验(MATLAB仿真实验)
设计性实验(MATLAB仿真实验)

设计性实验(MATLAB仿真实验)

3.1M ATALAB语言概述

3.1.1 MATALAB语言的发展

MATALAB是一种科学计算软件,主要适用于矩阵运算及控制和信息处理领域的分析设计。它使用方便,输入简洁,运算高效,内容丰富,并且很容易由用户自行扩展,因此,当前已成为美国和其他发达国家大学教学和科学研究中最常用而必不可少的工具。

MATLAB是由美国Mathworks公司与1984年正式推出的,从那时到现在已升级到7.x版本。随着版本的升级,内容不断扩充,功能更强大。特别是在系统仿真和实时运行等方面,有很多新进展,更扩大了它的应用前景。

MATLAB是“矩阵实验室”(MATrix Laboratoy)的缩写,它是一种以矩阵运算为基础的交互式程序语言,专门针对科学、工程计算及绘图的需求。它用解释方式工作,键入程序立即得出结果,人机交互性能好,适应于多种平台。MATLAB语言在国外的大学工学院中,特别是数值计算用的最频繁的电子信息类学科中,已成为每个学生都掌握的工具了。它大大提高了课程教学、解题作业、分析研究的效率。

MATLAB语言比较好学,因为它只有一种数据类型,一种标准的输入输出语句,不用“指针”,不需编译,比其他语言少了很多内容;听三、四个小时课,上机练几个小时,就可入门了。以后自学也十分方便,通过它的演示(demo)和求助(help)命令,人们可以方便地在线学习各种函数的用法及其内涵

MATLAB语言的难点是函数较多,仅基本部分就有700多个,其中常用的有二三百个,要尽量多记少查,可以提高编程效率。

3.1.2MATLAB语言的特点

1.矩阵运算:每个变量代表一个矩阵,它以矩阵运算见长;每个元素都看作复数,所有的运算都对矩阵和复数有效。(虚部符号可用i或j) clear %清除内存变量

format short %

c1=1-2i,c2=3*(2-sqrt(-1)*3),c3=6+sin(.5)*1j

c4=complex(1,2) %建立复数

c1 =

1.0000 -

2.0000i

c2 =

6.0000 - 9.0000i c3 =

6.0000 + 0.4794i c4 =

1.0000 +

2.0000i

c1r=real(c1),c1i=imag(c1),abs_c1=abs(c1),angle_c1=angle(c1) 结果: c1r = 1 c1i = -2 abs_c1 = 2.2361 angle_c1 = -1.1071

注意:

(1)所有的标点符号必须是在英文状态下输入。

(2)各指令行可以用逗号或分号隔开,如用分号,则分号前的指令只执行,不显示结果。

(3)在命令窗口中输入指令后,必须按下[enter ]键,该指令才会被执行.

(4)%为注释符,即%后面的内容为注释,对MATLAB 的计算不产生任何影响。

2.人机界面适合科技人员:其程序与科技人员的书写习惯相近,易写易读。矩阵行数列数无需定义。键入算式即得结果,无需编译。

例如:简单矩阵????

??????=98

7

654

32

1

A 的输入步骤。 (1)在键盘上输入下列内容

A=[1,2,3;4,5,6;7,8,9] 结果: A =

1 2 3 4 5 6

7 8 9

(2)按[enter]键,指令执行。

注意:直接输入矩阵时,矩阵元素用空格或逗号”,”分隔,整个矩阵放到方括号“[]”里。标点符号一定要在英文状态下输入。

(3)指令执行后,矩阵A被保存在MATLAB的工作空间(Workspace)中。如果用户不用clear指令清除它,或对它重新赋值,那么该矩阵会一直保存在工作空间中,直到本MATLAB指令窗被关闭为止。

(4)MATLAB区分大小写字母。

3.强大而简易的作图功能

(1)能根据输入数据自动确定坐标绘图。

(2)能规定多种坐标系(极坐标,对数坐标等)。

(3)能绘制三维坐标中的曲线和曲面。

(4)可设置不同颜色、线型和视角等。

如果数据齐全,通常只需要一条命令即可出图。

例:用图形表示离散函数1)6

y。

=n

-

(-

n=(0:12); %产生一组自变量数据

y=1./abs(n-6); %计算相应点的函数值

plot(n,y,'r*','MarkerSize',15) %用红花标出数据点

grid on %画坐标方格

说明:./表示点除,用于元素对元素的除法。而/表示矩阵除法。还有'.*' , '.^' 及 '*', '^'。

4.智能化程度高

(1)绘图时自动选择最佳坐标。

(2)做数值积分时,自动按精度选择步长。

(3)自动检测和显示程序错误的能力强,易于调试。

5.功能丰富,可扩展性强

MATLAB软件包括基本部分和专业扩展两大部分。基本部分包括:矩阵的运算和各种变换;代数和超越方程的求解,数据处理和傅里叶变换,数值积分等等。扩展部分称为工具箱。它实际上是用MATLAB的基本语句编成的各种子程序集,用于解决某一方面的专门问题,或实现某一类的新算法。现在已经有控制系统,信号处理、图像处理、系统辨识、模糊集合、神经元网络和小波分析等数十个工具箱,并且还在继续发展中。

MATLAB的核心内容是它的基本部分,所有的工具箱子程序都是用它的基本语句编写的。学好这部分内容是掌握MATLAB的关键。

3.1.3M ATLAB的工作环境

MATLAB7.x的工作环境主要由命令窗(Command Window)、图形窗(Figure Window)和文本编辑窗(File Editor)组成。

1. 命令窗(Command Window)

Command Window是MATLAB中最重要的部分,它是人机交互的主要环境,也是和编译器连接的主要窗口。用户通过在提示符“>>”后直接输入各种命令并读出相应的结果。命令窗见MATLAB桌面系统的默认画面。其左上视窗为当前目录(Current Directory),可切换为工作空间(Workspace);其左下视窗为历史命令(Command History);右半个视窗则为命令窗(Command Window)。常用的窗口命令如下:

clc:清除Command Window里的内容;

clear:清除内存变量;

home:光标回到窗口的左上角;

clf:清除当前Figure窗口的所有非隐藏对象;

close:关闭当前Figure窗口;

close all:关闭所有Figure窗口

工作空间有多种应用功能:内存变量的查阅、保存和编辑;在命令行下,可以用who,whos查阅MATLAB内存变量;who用于检查现存于工作空间(Workspace)的变量;whos用于检查现存于工作空间的变量的详细资料。内存变量可以用clear命令清除。如

clear %清除所有内存变量

a=(1:7)'

>>

a =

1

2

3

4

5

6

7

who %显示内存变量名

>>

Your variables are:

a

whos %显示内存变量名和尺寸、占用内存空间、类型

>>

Name Size Bytes Class Attributes

a 7x1 56 double

clear a %清除变量a

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

ESC 恢复命令输入的空白状态(即作废命令)

↓调出下一行命令

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

这个功能在程序调试时十分有用。对于已执行过的命令,如要做些修改后重新执行,就不必重新键入,用↑键调出原命令做修改即可。(2)主菜单中的编辑(Edit)项功能:用它可以把屏幕上选中的文字裁剪(Cut)或复制(Copy)下来,放到剪贴板上,然后粘贴

(Paste)到任意其他视窗的任何位置上去。这是MATLAB与其他软件(如Word)交换文件、数据和图形的重要方法。

(3)D ebug项是调试程序时使用的。

(4)D esktop项功能:用它可以改变屏幕上显示的视窗布局。如显示或隐藏命令窗、历史命令窗、工作空间、当前目录;最大化命令窗等。

(5)H elp项功能:展示详尽的帮助。

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

(7)键入help子目录名,如help elfun,即得出elfun库(初等数学函数库)中各函数名。

(8)键入help函数名,如help eye,即得到eye 函数的意义和用法。(9)退出MATLAB有两种方法。一是键入exit或quit,还有一种是用鼠标双击左上角的小方块或单击右上角的×号。后一种情况属非正常退出,该次进程的所有的命令将不纪录在“历史命令窗

中”,故应尽量避免使用。

2 .图形窗

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

3. 文本编辑窗(M文件编辑窗)

MATLAB程序编制有两种方式。一种称为命令方式,在命令窗中的命令符“>>”下一行一行地输入命令,计算机每次对一行命令做出反应,像计算器那样;这只能编简单的程序,在入门时可以用这种方式。程序稍复杂一些,就应把程序写成一个有多行语句组成的文件,即M文件,让MATLAB来执行这个文件;编写和修改这种文件程序就要用到文本编辑器Editor。文本编辑器可以将程序像文本一样编辑,如复制、粘贴等,非常方便。一行中可以键入几个命令,用“;”或

“,"隔开。如用“;”则该函数的执行结果不显示(图形函数除外);如用","则该函数的运行结果要显示。

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

3.2基本语法

3.2.1 变量及其赋值

在MATLAB内部所有变量均保存成double的形式,即双精度(64位)二进制。这是为了简化编程,MATLAB省去了许多种数据格式。 MATLAB是基于矩阵运算的,MATLAB中的所有变量或常量都以矩阵形式保存的。一个数也是矩阵,只不过它是1×1阶的矩阵。

变量名的命名规则如下:

(1)变量名区分大小写。

(2)变量名最多能包括63个字符,其后的字符都被忽略。

(3)变量名必须以一个字母开始,其后可以是任意数量的字母、数字、下划线,字符中间不能留空格。

(4)不允许出现标点符号,因为很多标点符号在MATLAB中有特殊的意义。

(5)M ATLAB中的关键字(又称保留字)不能用作变量名。关键字如下:For end if while function return elseif case otherswise

switch continue else try catch global persistent break。

3.2.2矩阵及其元素的赋值

赋值就是把数赋予代表常量或变量的标示符。MATLAB中的变量或常量都代表矩阵,标量看作1×1阶的矩阵。赋值语句的一般形式为:

变量=表达式(或数)

例如:

a=[1 2 3;4 5 6;7 8 9]

x=[-1.3,sqrt(3),(1+2+3)/5*4]

>>

a =

1 2 3

4 5 6

7 8 9

x =

-1.3000 1.7321 4.8000

矩阵的值放在方括号中,同一行元素之间用逗号或空格分开,不同的行则以分号或回车隔开,执行语句要键入[enter]键。

变量的元素用圆括号“()”中的数字(也称为下标)来注明,一维矩阵中的元素用一个下标表示,二维用两个下标,以逗号分开。三维或更高维数矩阵,可有三个或更多下标。用户可以单独给元素赋值,如x(2)=1.7321,等。如果赋值元素的下标超出了原来矩阵的大小,矩阵的行列会自动扩展。如:

x(5)=abs(x(1))

a(4,3)=6.5

>>

x =

-1.3000 1.7321 4.8000 0 1.3000

a =

1.0000

2.0000

3.0000

4.0000

5.0000

6.0000

7.0000 8.0000 9.0000

0 0 6.5000

可见跳空的元素x(4),a(4,1),a(4,2)被自动赋值。这种自动扩展维数的功能只适用于赋值语句,在其他语句中若出现超维调用的情况,系统将给出出错提示。

给全行赋值,可用冒号。如给a的第5行赋值。键入

a(5,:)=[5,4,3]

>>

a =

1.0000

2.0000

3.0000

4.0000

5.0000

6.0000

7.0000 8.0000 9.0000

0 0 6.5000

5.0000 4.0000 3.0000

把a的第2,4行及第1,3列交点上的元素取出,构成一个新矩阵b。可键入 b=a([2,4],[1,3])

>>

b =

4.0000 6.0000

0 6.5000

要抽去a中的第2、4,5行,可利用空矩阵[]概念。

键入 a([2,4,5],:)=[]

a =

1 2 3

7 8 9

注意,“空矩阵”是指没有元素的矩阵。对任何一个矩阵赋值[],就是使它的元素都消失。这完全不同于“零矩阵”,后者是元素存在,只是其数值为零而已。可以看出,空矩阵是使矩阵减缩是不可缺少的概念。

2.1.2复数

MATLB的每一个元素都可以使复数,实数是复数的特例,复数的虚数部分用i或j表示。这是MATLAB启动时就在内部设定的。

对复数矩阵有两种赋值方法。

(1)将其元素逐个赋予复数,如:

键入z=[1+2i,3+4i;5+6i,7+8i]

z =

1.0000 +

2.0000i

3.0000 +

4.0000i

5.0000 +

6.0000i

7.0000 +

8.0000i

(2)将其实部和虚部分别赋值,如:

z=[1,3;5,7]+[2,4;6,8]*j

z =

1.0000 +

2.0000i

3.0000 +

4.0000i

5.0000 +

6.0000i

7.0000 +

8.0000i

两种方法结果相同。注意,只有数字和i(或j)的乘积可省略乘号,在上述矩阵式中若省略乘号“*”,就会出错。另外,如果在前面程序中曾经给i或j赋过其他值,则i,j已经不是虚数符号,这些虚数赋值语句就都不对了。为此,应使用clear i,j命令把原赋值的i,j清掉,然后再执行复数赋值语句。

MATLAB中的所有的运算符和函数都对复数有效。例如:

键入 f=sqrt(1+2i)

f =

1.2720 + 0.7862i

2.1.3基本赋值矩阵

魔方矩阵magic(n)的特点是:其元素由1到n2的自然数组成;每行、每列及两对角线上的元素之和均等于(n3+n)/2。单位矩阵eye(n)是n×n阶的方阵,其对角线上的元素为1,其余元素为0。全1矩阵ones(n)是n×n阶的单位阵。如:

f1=ones(3,2),f2=zeros(2,3),f3=magic(3),f4=eye(2)

f1 =

1 1

1 1

1 1

f2 =

0 0 0

0 0 0

f3 =

8 1 6

3 5 7

4 9 2

f4 =

1 0

0 1

又如:

g=[1,2,3,4;5,6,7,8;9,10,11,12]

g =

1 2 3 4

5 6 7 8

9 10 11 12

ones(3)

ans =

1 1 1

1 1 1

1 1 1

size(g)

ans =

3 4

ones(size(g))

ans =

1 1 1 1

1 1 1 1

1 1 1 1

eye(4)

ans =

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

eye(2,4)

ans =

1 0 0 0

0 1 0 0

eye(4,2)

ans =

1 0

0 1

0 0

0 0

线形分割函数linspace(a,b,n)在a与b之间均匀地产生n个点值,形成n 维向量(步长为(b-a)/(n-1)。如:

f5=linspace(0,1,5)

f5 =

0 0.2500 0.5000 0.7500 1.0000

大矩阵可由若干小矩阵组成,但必须其行列数正确,恰好填满全部元素。如键入

fb1=[f1,f3;f4,f2]

fb1 =

1 1 8 1 6

1 1 3 5 7

1 1 4 9 2

1 0 0 0 0

0 1 0 0 0

下面的命令将创建随机矩阵:

randn('state',0) %把正态随机数发生器置零

randn(3) %产生3×3的正态随机阵

ans =

-0.4326 0.2877 1.1892

-1.6656 -1.1465 -0.0376

0.1253 1.1909 0.3273

randn(2,5) %产生2×5的正态随机阵

ans =

0.1746 0.7258 2.1832 0.1139 0.0593

-0.1867 -0.5883 -0.1364 1.0668 -0.0956

a=[1:4;5:8;9:12]

a =

1 2 3 4

5 6 7 8

9 10 11 12

diag(a) %取a的对角元素

ans =

1

6

11

diag(diag(a)) %内diag取a的对角元素,外diag利用对角元素生成对角阵ans =

1 0 0

0 6 0

0 0 11

3.3 数值数组及其运算

3.3.1引导

数组是由一组实数或复数排成的长方形阵列。它可以是一维的“行”或“列”,可以是二维或多维的矩阵。

例:绘制函数y=xe-x在0≤x≤1时的曲线。

x=0:0.1:1 %定义自变量的采样点取值数组

y=x.*exp(-x) %利用数组运算计算各自变量采样点上的函数值

plot(x,y),xlabel('x'),ylabel('y'),title('y=x*exp(-x)') %绘图

x =

Columns 1 through 10

0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000

Column 11

1.0000

y =

Columns 1 through 10

0 0.0905 0.1637 0.2222 0.2681 0.3033 0.3293 0.3476 0.3595 0.3659

Column 11

0.3679

图3-2函数y=xe-x

“.*"实施数组x和数组exp(x)对应元素之间的相乘。

3.3.2一维数组

1.创建

(1)逐个元素输入法

x=[2 pi/2 sqrt(3) 3+5i]

x =

2.0000 1.5708 1.7321

3.0000 + 5.0000i

(2)冒号生成法

x=a:inc:b

说明:a是数组的第一个元素;inc是采样点之间的间隔,即步长。如(b-a)是inc的整数倍,则所生成数组的最后一个元素是b,否则小于b。注意:该冒号必须在英文状态下产生。中文状态下的冒号将导致MATLAB操作错误!

(3)线形分割函数linspace(a,b,n)产生

说明:a,b分别是生成数组的第一个和最后一个元素。n是采样总点数。该命令生成(1×n)数组。该命令的作用与x=a:(b-a)/(n-1):b 相同。

2.寻访和赋值

在MATLAB中,可以通过下标来访问单个数组元素。例如,x(1)是x的第一个元素。x(2)是x的第二个元素,依此类推。例如:

clear

x=1:2:12

x =

1 3 5 7 9 11

x(3)

ans =

5

x([1 2 5])

ans =

1 3 9

x(1:3)

ans =

1 3 5

x(3:end) %end是指一维数组的长度,即最大下标

ans =

5 7 9 11

x(3:-1:1)

ans =

5 3 1

x(find(x>5))

ans =

7 9 11

x([1 2 3 4 4 3 2 1]) %对元素可以重复访问,使所得数组长度允许大于原数组

ans =

1 3 5 7 7 5 3 1

x(3)=0

x =

1 3 0 7 9 11

x([1 4])=[2 2] %把当前x数组的第一、四个元素都赋值为2

x =

2 3 0 2 9 11

3.3.3二维数组

1.创建

可以采用直接输入法。对于较小输入数组,从键盘上直接输入最简便。二维数组必须有以下三个要素:

(1)整个数组必须以方括号“[]”为其首尾;

(2)数组的行与行之间必须用分号“;”或回车键[enter]隔离;(3)数组元素必须由逗号“,”或空格分隔。

例:

a=2.7358;b=33/79;

c=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i]

c =

1.0000 5.4716 + 0.4177i 0.6909

0.7071 4.8244 3.5000 + 1.0000i

d=c'

d =

1.0000 0.7071

5.4716 - 0.4177i 4.8244

0.6909 3.5000 - 1.0000i

e=c.'

e =

1.0000 0.7071

5.4716 + 0.4177i 4.8244

0.6909 3.5000 + 1.0000i

3.3.4“非数”和“空”数组

1.非数NaN

按IEEE规定,0/0,∞/∞,0×∞等都会产生非数。该数在MATLAB 中用NaN或nan记述。注意:(1)NaN参与运算所得结果也是NaN,即具有传递性。(2)非数没有大小概念,因此不能比较两个非数大小。

2.“空”数组

在旧版本的MATLAB中只有二维“空”数组,用[]表示。高版本的“空”数组引进了高维数组。

注意:(1)不要把“空”数组和全零数组混淆。

(2)不要把空数组看成“虚无”,它确实存在。

3.3.5关系操作和逻辑操作

MATLAB的约定:

(1)在所有关系表达式和逻辑表达式中,作为输入的任何非0数都被看作是“逻辑真”,而只有0才被认为是“逻辑假”。

(2)所有关系表达式和逻辑表达式的计算结果,即输出,是一个由0和1组成的“逻辑数组”。在此数组中的1表示“真”,0表示“假”。

(3)逻辑数组是一种特殊的数组数组。

1.关系操作

元素之间进行,因此比较结果将与被比较数组同维。

(2)当比较中没有标量时,关系符两边进行比较的数组必修维数相同。

例:

clear;A=1:9,B=10-A,r0=(A<4),r1=(A==B)

A =

1 2 3 4 5 6 7 8 9

B =

9 8 7 6 5 4 3 2 1

r0 =

1 1 1 0 0 0 0 0 0

r1 =

0 0 0 0 1 0 0 0 0

2.逻辑操作

例:

clear;A=1:9,L1=~(A>5)

L2=(A>3)&(A<7)

A =

1 2 3 4 5 6 7 8 9

L1 =

1 1 1 1 1 0 0 0 0

L2 =

0 0 0 1 1 1 0 0 0

3.4 程序控制语句

下面是MATLAB编程中常用的程序控制语句。

3.4.1判断if语句

if语句通过判断逻辑表达式的值实现分支算法。当表达式的逻辑值为真,则执行后面的语句块所包含的指令;否则跳过该语句块。

(1)if 逻辑表达式

语句

end

(2)if 逻辑表达式

语句1

else

语句2

end

(3)if 逻辑表达式1

语句1

elseif 逻辑表达式2

语句2

else

语句n

end

例:比较两个数的大小。

x=32;y=86;

if x>y

'x大于y'

elseif x

'x小于y'

elseif x==y

'x等于y'

else

'error'

end

ans =

x小于y

3.4.2循环语句

MATLAB的循环语句有for循环语句和while循环语句两种。while循环和for循环的区别在于:while循环结构的循环体被执行的次数不是确定的,而for循环结构中循环体的执行次数是确定的。(1)f or循环语句

for 循环变量=起始值:步长:终止值

循环体

end

例:从1加到10。

clear;

a=0;

for i=1:1:10

a=a+i;

end

a

a =

55

(2)w hile 循环语句

while 表达式

循环体

end

若表达式为真,则执行循环体的内容,执行后再判断表达式是否是真,若不为真,则跳出循环体,向下继续执行。

例:

num=0;a=5;

while a>1

a=a/2;

num=num+1;

end

num

num =

3

当"a>1"不为真时跳出循环体,共执行了3次循环。

例:Fibonacci数组的元素满足Fibonacci规则:a k+2=a k+a k+1,(k=1,,2,….);且a1=a2=1。现要求出该数组中第一个大于10000的元素。a(1)=1;a(2)=1;i=2;

while a(i)<=10000

a(i+1)=a(i-1)+a(i);

i=i+1;

end

i,a(i),

现代信号处理Matlab仿真——例611

例6.11 利用卡尔曼滤波估计一个未知常数 题目: 设已知一个未知常数x 的噪声观测集合,已知噪声v(n)的均值为零, 方差为 ,v(n)与x 不相关,试用卡尔曼滤波估计该常数 题目分析: 回忆Kalman 递推估计公式 由于已知x 为一常数,即不随时间n 变化,因此可以得到: 状态方程: x(n)=x(n-1) 观测方程: y(n)=x(n)+v(n) 得到A(n)=1,C(n)=1, , 将A(n)=1,代入迭代公式 得到:P(n|n-1)=P(n-1|n-1) 用P(n-1)来表示P(n|n-1)和P(n-1|n-1),这是卡尔曼增益表达式变为 从而 2v σ1??(|1)(1)(1|1)(|1)(1)(1|1)(1)()()(|1)()[()(|1)()()]???(|)(|1)()[()()(|1)](|)[()()](|1)H w H H v x n n A n x n n P n n A n P n n A n Q n K n P n n C n C n P n n C n Q n x n n x n n K n y n C n x n n P n n I K n C n P n n --=----=----+=--+=-+--=--2()v v Q n σ=()0w Q n =(|1)(1)(1|1)(1)()H w P n n A n P n n A n Q n -=----+21 ()(|1)[(|1)]v K n P n n P n n σ-=--+22(1)()[1()](1)(1)v v P n P n K n P n P n σσ-=--=-+

MATLAB仿真实验报告

MATLAB 仿真实验报告 课题名称:MATLAB 仿真——图像处理 学院:机电与信息工程学院 专业:电子信息科学与技术 年级班级:2012级电子二班 一、实验目的 1、掌握MATLAB处理图像的相关操作,熟悉相关的函数以及基本的MATLAB语句。 2、掌握对多维图像处理的相关技能,理解多维图像的相关性质 3、熟悉Help 命令的使用,掌握对相关函数的查找,了解Demos下的MATLAB自带的原函数文件。 4、熟练掌握部分绘图函数的应用,能够处理多维图像。 二、实验条件

MATLAB调试环境以及相关图像处理的基本MATLAB语句,会使用Help命令进行相关函数查找 三、实验内容 1、nddemo.m函数文件的相关介绍 Manipulating Multidimensional Arrays MATLAB supports arrays with more than two dimensions. Multidimensional arrays can be numeric, character, cell, or structure arrays. Multidimensional arrays can be used to represent multivariate data. MATLAB provides a number of functions that directly support multidimensional arrays. Contents : ●Creating multi-dimensional arrays 创建多维数组 ●Finding the dimensions寻找尺寸 ●Accessing elements 访问元素 ●Manipulating multi-dimensional arrays操纵多维数组 ●Selecting 2D matrices from multi-dimensional arrays从多维数组中选择二维矩 阵 (1)、Creating multi-dimensional arrays Multidimensional arrays in MATLAB are created the same way as two-dimensional arrays. For example, first define the 3 by 3 matrix, and then add a third dimension. The CAT function is a useful tool for building multidimensional arrays. B = cat(DIM,A1,A2,...) builds a multidimensional array by concatenating(联系起来)A1, A2 ... along the dimension DIM. Calls to CAT can be nested(嵌套). (2)、Finding the dimensions SIZE and NDIMS return the size and number of dimensions of matrices. (3)、Accessing elements To access a single element of a multidimensional array, use integer subscripts(整数下标). (4)、Manipulating multi-dimensional arrays

实验二 Matlab程序设计基本方法1

实验二Matlab程序设计基本方法 覃照乘自092 电气工程学院 一、实验目的: 1、熟悉MATLAB 程序编辑与设计环境 2、掌握各种编程语句语法规则及程序设计方法 3、函数文件的编写和设计 4、了解和熟悉跨空间变量传递和赋值 二、实验基本知识: ◆for循环结构 语法:for i=初值:增量:终值 语句1 …… 语句n end 说明:1.i=初值:终值,则增量为1。 2.初值、增量、终值可正可负,可以是整数,也可以是小数,只须符合数学逻辑。 ◆while 循环结构 语法:while 逻辑表达式 循环体语句 end 说明:1、whiIe结构依据逻辑表达式的值判断是否执行循环体语勾。若表达式的值为真,执行循环体语句一次、在反复执行时,每次都要进行判断。若表达 式的值为假,则程序执行end之后的语句。 2、为了避免因逻辑上的失误,而陷入死循环,建议在循环体语句的适当位 置加break语句、以便程序能正常执行。(执行循环体的次数不确定; 每一次执行循环体后,一定会改变while后面所跟关系式的值。) 3、while循环也可以嵌套、其结构如下:

while逻辑表达式1 循环体语句1 while逻辑表达式2 循环体语句2 end 循环体语句3 end ◆if-else-end分支结构 if 表达式1 语句1 else if 表达式2(可选) 语句2 else(可选) 语句3 end end 说明:1.if结构是一个条件分支语句,若满足表达式的条件,则往下执行;若不满足,则跳出if结构。 2.else if表达式2与else为可选项,这两条语句可依据具体情况取舍。 3.注意:每一个if都对应一个end,即有几个if,记就应有几个end。 ◆switch-case结构 语法:switch表达式 case常量表达式1 语句组1 case常量表达式2 语句组2 …… otherwise 语句组n end

Matlab通信系统仿真实验报告

Matlab通信原理仿真 学号: 2142402 姓名:圣斌

实验一Matlab 基本语法与信号系统分析 一、实验目的: 1、掌握MATLAB的基本绘图方法; 2、实现绘制复指数信号的时域波形。 二、实验设备与软件环境: 1、实验设备:计算机 2、软件环境:MATLAB R2009a 三、实验内容: 1、MATLAB为用户提供了结果可视化功能,只要在命令行窗口输入相应的命令,结果就会用图形直接表示出来。 MATLAB程序如下: x = -pi::pi; y1 = sin(x); y2 = cos(x); %准备绘图数据 figure(1); %打开图形窗口 subplot(2,1,1); %确定第一幅图绘图窗口 plot(x,y1); %以x,y1绘图 title('plot(x,y1)'); %为第一幅图取名为’plot(x,y1)’ grid on; %为第一幅图绘制网格线 subplot(2,1,2) %确定第二幅图绘图窗口 plot(x,y2); %以x,y2绘图 xlabel('time'),ylabel('y') %第二幅图横坐标为’time’,纵坐标为’y’运行结果如下图: 2、上例中的图形使用的是默认的颜色和线型,MATLAB中提供了多种颜色和线型,并且可以绘制出脉冲图、误差条形图等多种形式图: MATLAB程序如下: x=-pi:.1:pi; y1=sin (x); y2=cos (x); figure (1); %subplot (2,1,1); plot (x,y1); title ('plot (x,y1)'); grid on %subplot (2,1,2); plot (x,y2);

Matlab仿真实例-卫星轨迹

卫星轨迹 一.问题提出 设卫星在空中运行的运动方程为: 其中是k 重力系数(k=401408km3/s)。卫星轨道采用极坐标表示,通过仿真,研究发射速度对卫星轨道的影响。实验将作出卫星在地球表面(r=6400KM ,θ=0)分别以v=8KM/s,v=10KM/s,v=12KM/s 发射时,卫星绕地球运行的轨迹。 二.问题分析 1.卫星运动方程一个二阶微分方程组,应用Matlab 的常微分方程求解命令ode45求解时,首先需要将二阶微分方程组转换成一阶微分方程组。若设,则有: 2.建立极坐标如上图所示,初值分别为:卫星径向初始位置,即地球半径:y(1,1)=6400;卫星初始角度位置:y(2,1)=0;卫星初始径向线速度:y(3,1)=0;卫星初始周向角速度:y(4,1)=v/6400。 3.将上述一阶微分方程及其初值带入常微分方程求解命令ode45求解,可得到一定时间间隔的卫星的径向坐标值y(1)向量;周向角度坐标值y(2)向量;径向线速度y(3)向量;周向角速度y(4)向量。 4.通过以上步骤所求得的是极坐标下的解,若需要在直角坐标系下绘制卫星的运动轨迹,还需要进行坐标变换,将径向坐标值y(1)向量;周向角度坐标值y(2)向量通过以下方程转换为直角坐标下的横纵坐标值X,Y 。 5.卫星发射速度速度的不同将导致卫星的运动轨迹不同,实验将绘制卫星分别以v=8KM/s ,v=10KM/s ,v=12KM/s 的初速度发射的运动轨迹。 三.Matlab 程序及注释 1.主程序 v=input('请输入卫星发射速度单位Km/s :\nv=');%卫星发射速度输入。 axis([-264007000-1000042400]);%定制图形输出坐标范围。 %为了直观表达卫星轨迹,以下语句将绘制三维地球。 [x1,y1,z1]=sphere(15);%绘制单位球。 x1=x1*6400;y1=y1*6400;???????-=+-=dt d dt dr r dt d dt d r r k dt r d θ θθ2)(2 22222θ==)2(,)1(y r y ?????????????**-=**+*-===)1(/)4()3(2)4()4()4()1()1()1()3()4()2() 3()1(y y y dt dy y y y y y k dt dy y dt dy y dt dy ???*=*=)] 2(sin[)1(Y )]2(cos[)1(X y y y y

MATLAB仿真实验全部

实验一 MATLAB 及仿真实验(控制系统的时域分析) 一、实验目的 学习利用MATLAB 进行控制系统时域分析,包括典型响应、判断系统稳定性和分析系统的动态特性; 二、预习要点 1、 系统的典型响应有哪些 2、 如何判断系统稳定性 3、 系统的动态性能指标有哪些 三、实验方法 (一) 四种典型响应 1、 阶跃响应: 阶跃响应常用格式: 1、)(sys step ;其中sys 可以为连续系统,也可为离散系统。 2、),(Tn sys step ;表示时间范围0---Tn 。 3、),(T sys step ;表示时间范围向量T 指定。 4、),(T sys step Y =;可详细了解某段时间的输入、输出情况。 2、 脉冲响应: 脉冲函数在数学上的精确定义:0 ,0)(1)(0 ?==?∞ t x f dx x f 其拉氏变换为:) ()()()(1)(s G s f s G s Y s f === 所以脉冲响应即为传函的反拉氏变换。 脉冲响应函数常用格式: ① )(sys impulse ; ② ); ,();,(T sys impulse Tn sys impulse ③ ),(T sys impulse Y = (二) 分析系统稳定性 有以下三种方法: 1、 利用pzmap 绘制连续系统的零极点图; 2、 利用tf2zp 求出系统零极点; 3、 利用roots 求分母多项式的根来确定系统的极点 (三) 系统的动态特性分析 Matlab 提供了求取连续系统的单位阶跃响应函数step 、单位脉冲响应函数impulse 、零输入响应函数initial 以及任意输入下的仿真函数lsim.

实验3MATLAB程序设计

1,编写M 函数实现求一个数是否为素数,再编写一主程序(脚本文件),要求通过键盘输入一个整数,然后调用判断素数函数,从而确定它是否素数。 x=input('请输入一个整数x:'); if myprime(x) disp('您输入的整数x是一个素数。') else disp('您输入的数x不是一个素数。') end function y=myprime(x) y=1; for i=2:fix(sqrt(x)) if mod(x,i)==0 y=0; end end 2,编写M 函数统计一数值中零的个数,然后编写脚本文件,实现统计从1—2007 中零的总个数。 function num=number0(a) %统计十进制数值中0的个数 sa=num2str(a);%将数值装化为字符串 num=length(find(sa=='0'));% ));%求取字符串中'0’的个数 y=0;

for a=1:2006 num=number0(a); y=num+y; end disp(y) 504 3,编写程序计算x∈[-3,3],字长0.01:并画出曲线x = -3:0.01:3; y=zeros(size(x)); for i = 1:length(x) if -3<= x(i)& x(i)<=-1 y(i)=(-x(i).^2-4*x(i)-3)/ 2; elseif -1<= x(i) & x(i)<=1 y(i)=-x(i).^2+1; elseif 1<=x(:,i)<=3 y(i)=(-x(i).^2+4*x(i)-3)/2; end end plot(x,y) -3-2-10123

MATLAB实现通信系统仿真实例

补充内容:模拟调制系统的MATLAB 仿真 1.抽样定理 为了用实验的手段对连续信号分析,需要先对信号进行抽样(时间上的离散化),把连续数据转变为离散数据分析。抽样(时间离散化)是模拟信号数字化的第一步。 Nyquist 抽样定律:要无失真地恢复出抽样前的信号,要求抽样频率要大于等于两倍基带信号带宽。 抽样定理建立了模拟信号和离散信号之间的关系,在Matlab 中对模拟信号的实验仿真都是通过先抽样,转变成离散信号,然后用该离散信号近似替代原来的模拟信号进行分析的。 【例1】用图形表示DSB 调制波形)4cos()2cos(t t y ππ= 及其包络线。 clf %%计算抽样时间间隔 fh=1;%%调制信号带宽(Hz) fs=100*fh;%%一般选取的抽样频率要远大于基带信号频率,即抽样时间间隔要尽可能短。 ts=1/fs; %%根据抽样时间间隔进行抽样,并计算出信号和包络 t=(0:ts:pi/2)';%抽样时间间隔要足够小,要满足抽样定理。 envelop=cos(2*pi*t);%%DSB 信号包络 y=cos(2*pi*t).*cos(4*pi*t);%已调信号 %画出已调信号包络线 plot(t,envelop,'r:','LineWidth',3); hold on plot(t,-envelop,'r:','LineWidth',3); %画出已调信号波形 plot(t,y,'b','LineWidth',3); axis([0,pi/2,-1,1])% hold off% xlabel('t'); %写出图例 【例2】用图形表示DSB 调制波形)6cos()2cos(t t y ππ= 及其包络线。 clf %%计算抽样时间间隔 fh=1;%%调制信号带宽(Hz) fs=100*fh;%抽样时间间隔要足够小,要满足抽样定理。 ts=1/fs; %%根据抽样时间间隔进行抽样

刘卫国版MATLAB程序设计与应用课后实验六八九

实验六 高层绘图操作 %第一题: 程序代码如下: x=linspace(0,2*pi,101); y=(0.5+3*sin(x)./(1+x.^2)).*cos(x); plot(x,y) 01234567 -1 -0.5 0.5 1 1.5 %第二题: %(1) 程序代码如下: x=linspace(-2*pi,2*pi,100); y1=x.^2; y2=cos(2*x); y3=y1.*y2; plot(x,y1,'b-',x,y2,'r:',x,y3,'y--'); text(4,16,'\leftarrow y1=x^2'); text(6*pi/4,-1,'\downarrow y2=cos(2*x)'); text(-1.5*pi,-2.25*pi*pi,'\uparrow y3=y1*y2');

-8 -6 -4 -2 2 4 6 8 -30-20 -10 10 20 30 40 %(2) 程序代码如下: x=linspace(-2*pi,2*pi,100); y1=x.^2; y2=cos(2*x); y3=y1.*y2; subplot(1,3,1);%分区 plot(x,y1); title('y1=x^2');%设置标题 subplot(1,3,2); plot(x,y2); title('y2=cos(2*x)'); subplot(1,3,3); plot(x,y3); title('y3=x^2*cos(2*x)');

-10 10 0510 15202530 35 40y1=x 2 -10 10 -1-0.8 -0.6 -0.4-0.200.20.4 0.6 0.8 1y2=cos(2*x) -10 10 -30-20 -10 10 20 30 40 y3=x 2*cos(2*x) %(3) 程序代码如下: x=linspace(-2*pi,2*pi,20); y1=x.^2; subplot(2,2,1);%分区 bar(x,y1); title('y1=x^2的条形图');%设置标题 subplot(2,2,2); stairs(x,y1); title('y1=x^2的阶梯图'); subplot(2,2,3); stem(x,y1); title('y1=x^2的杆图'); subplot(2,2,4); fill(x,y1,'r');%如果少了'r'则会出错 title('y1=x^2的填充图'); %其他的函数照样做。

MATLAB Simulink系统建模与仿真 实验报告

MATLAB/Simulink 电力系统建模与仿真 实验报告 姓名:****** 专业:电气工程及其自动化 班级:******************* 学号:*******************

实验一无穷大功率电源供电系统三相短路仿真 1.1 无穷大功率电源供电系统仿真模型构建 运行MATLAB软件,点击Simulink模型构建,根据电路原理图,添加下列模块: (1)无穷大功率电源模块(Three-phase source) (2)三相并联RLC负荷模块(Three-Phase Parallel RLC Load) (3)三相串联RLC支路模块(Three-Phase Series RLC Branch) (4)三相双绕组变压器模块(Three-Phase Transformer (Two Windings)) (5)三相电压电流测量模块(Three-Phase V-I Measurement) (6)三相故障设置模块(Three-Phase Fault) (7)示波器模块(Scope) (8)电力系统图形用户界面(Powergui) 按电路原理图连接线路得到仿真图如下: 1.2 无穷大功率电源供电系统仿真参数设置 1.2.1 电源模块 设置三相电压110kV,相角0°,频率50Hz,接线方式为中性点接地的Y形接法,电源电阻0.00529Ω,电源电感0.000140H,参数设置如下图:

1.2.2 变压器模块 变压器模块参数采用标幺值设置,功率20MVA,频率50Hz,一次测采用Y型连接,一次测电压110kV,二次侧采用Y型连接,二次侧电压11kV,经过标幺值折算后的绕组电阻为0.0033,绕组漏感为0.052,励磁电阻为909.09,励磁电感为106.3,参数设置如下图: 1.2.3 输电线路模块 根据给定参数计算输电线路参数为:电阻8.5Ω,电感0.064L,参数设置如下图: 1.2.4 三相电压电流测量模块 此模块将在变压器低压侧测量得到的电压、电流信号转变成Simulink信号,相当于电压、电流互感器的作用,勾选“使用标签(Use a label)”以便于示波器观察波形,设置电压标签“Vabc”,电流标签“Iabc”,参数设置如下图:

增量调制MATLAB仿真实验

增量调制MATLAB仿真实验

增量调制(DM)实验 一、实验目的 (1)进一步掌握MATLAB的应用。 (2)进一步掌握计算机仿真方法。 (3)学会用MATLAB软件进行增量调制(DM)仿真实验。 二、实验原理 增量调制是由PCM发展而来的模拟信号数字化的一种编码方式,它是PCM的一种特例。增量调制编码基本原理是指用一位编码,这一位码不是表示信号抽样值的大小,而是表示抽样幅度的增量特性,即采用一位二进制数码“1”或“0”来表示信号在抽样时刻的值相对于前一个抽样时刻的值是增大还是减小,增大则输出“1”码,减小则输出“0”码。输出的“1”,“0”只是表示信号相对于前一个时刻的增减,不表示信号的绝对值。 增量调制最主要的特点就是它所产生的二进制代码表示模拟信号前后两个抽样值的差别(增加、还是减少)而不是代表抽样值本身的大小,因此把它称为增量调制。在增量调制系统的发端调制后的二进制代码1和0只表示信号这一个抽样时刻相对于前一个抽样时刻是增加(用1码)还是减少(用0码)。收端译码器每收到一个1码,译码器的输出相对于前一个时刻的值上升一个量化阶,而收到一个0码,译码器的输出相对于前一个时刻的值下降一个量化阶。 增量调制(DM)是DPCM的一种简化形式。在增量调制方式下,采用1比特量化器,即用1位二进制码传输样值的增量信息,预测器是

一个单位延迟器,延迟一个采样时间间隔。预测滤波器的分子系数向量是[0,1],分母系数为1。当前样值与预测器输出的前一样值相比较,如果其差值大于零,则发1码,如果小于零则发0码。 三、实验内容 增量调制系统框图如图一所示,其中量化器是一个零值比较器,根据输入的电平极性,输出为 δ,预测器是一个单位延迟器,其输出为前一个采样时刻的解码样值,编码器也是一个零值比较器,若其输入为负值,则编码输出为0,否则输出为1。解码器将输入1,0符号转换为 δ,然后与预测值相加后得出解码样值输出,同时也作为预测器的输入 输入样值 e n e n =δsgn(e n ) 传输 n ) n n-1+δsgn(e n ) x n + - + + 预测输出 + n-1 + 预测输出 解码样值输出 x n-1 预测输入x n =x n-1+δsgn(e n ) 图一 增量调制原理框图 设输入信号为: x(t)=sin2π50t+0.5sin 2π150t 增量调制的采样间隔为1ms,量化阶距δ=0.4,单位延迟器初始值为0。建立仿真模型并求出前20个采样点使客商的编码输出序列以 解码 编码 二电平量化 单位延迟 单位 延迟

MATLAB程序设计实验报告

MATLAB 程序设计实验报告 一、实验目的 1. 通过实验熟悉MATLAB 仿真软件的使用方法; 2. 掌握用MATLAB 对连续信号时域分析、频域分析和s 域分析的方法,利用绘图命令绘制出典型信号的波形,了解这些信号的基本特征; 3. 掌握用MATLAB 对离散信号时域分析、频域分析和z 域分析的方法,利用绘图命令绘制出典型信号的波形,了解这些信号的基本特征; 4. 通过绘制信号运算结果的波形,了解这些信号运算对信号所起的作用。 二、实验设备 1. 计算机 : 2. MATLAB R2007a 仿真软件 三、实验原理 对系统的时域分析 信号的时域运算包括信号的相加、相乘,信号的时域变换包括信号的平移、反折、倒相及信号的尺度变换。 (1)信号的相加和相乘:已知信号)(1t f 和)(2t f ,信号相加和相乘记为 )()(1t f t f =)(2t f +;)()(1 t f t f =)(2t f *。 (2)信号的微分和积分:对于连续时间信号,其微分运算是用diff 函数来完成的,其语句格式为:diff(function,’variable’,n),其中function 表示需要进行求导运算的信号,或者被赋值的符号表达式;variable 为求导运算的独立变量;n 为求导的阶数,默认值为求一阶导数。连续信号的积分运算用int 函数来完成,语句格式为:diff(function,’variable’,a,b),其中function 表示需要进行被积信号,或者被赋值的符号表达式;variable 为求导运算的独立变量;a,b 为积分上、下限,a 和b 省略时为求不定积分。 (3)信号的平移、翻转和尺度变换 信号的平移包含信号的左移与右移,信号的翻转包含信号的倒相与折叠,平移和翻转信号不会改变信号)(t f 的面积和能量。信号的尺度变换是对信号)(t f 在时间轴上的变化,可使信号压缩或扩展。)(at f 将原波形压缩a 倍,)/(a t f 将原波形扩大a 倍。 ¥ 对系统频率特性的分析

控制理论实验报告MATLAB仿真实验解析

实验报告 课程名称:控制理论(乙) 指导老师:林峰 成绩:__________________ 实验名称:MATLAB 仿真实验 实验类型:________________同组学生姓名:__________ 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得 实验九 控制系统的时域分析 一、 实验目的: 1.用计算机辅助分析的办法,掌握系统的时域分析方法。 2.熟悉Simulink 仿真环境。 二、实验原理及方法: 系统仿真实质上就是对系统模型的求解,对控制系统来说,一般模型可转化成某个微分方程或差分方程表示,因此在仿真过程中,一般以某种数值算法从初态出发,逐步计算系统的响应,最后绘制出系统的响应曲线,进而可分析系统的性能。控制系统最常用的时域分析方法是,当输入信号为单位阶跃和单位冲激函数时,求出系统的输出响应,分别称为单位阶跃响应和单位冲激响应。在MATLAB 中,提供了求取连续系统的单位阶跃响应函数step ,单位冲激响应函数impulse ,零输入响应函数initial 等等。 二、实验内容: 二阶系统,其状态方程模型为 ? 1x -0.5572 -0.7814 1x 1 = + u ? 2x 0.7814 0 2x 0 1x y = [1.9691 6.4493] +[0] u 2x 四、实验要求: 1.编制MATLAB 程序,画出单位阶跃响应曲线、冲击响应曲线、系统的零输入响应、斜坡输入响应; (1)画出系统的单位阶跃响应曲线; A=[-0.5572 -0.7814;0.7814 0 ]; B=[1;0];

高频电子线路Matlab仿真实验

高频电子线路Matlab 仿真实验要求 1. 仿真题目 (1) 线性频谱搬移电路仿真 根据线性频谱搬移原理,仿真普通调幅波。 基本要求:载波频率为8kHz ,调制信号频率为400Hz ,调幅度为0.3;画出调制信号、载波信号、已调信号波形,以及对应的频谱图。 扩展要求1:根据你的学号更改相应参数和代码完成仿真上述仿真;载波频率改为学号的后5位,调制信号改为学号后3位,调幅度设为最后1位/10。(学号中为0的全部替换为1,例如学号2010101014,则载波为11114Hz ,调制信号频率为114,调幅度为0.4)。 扩展要求2:根据扩展要求1的条件,仿真设计相应滤波器,并获取DSB-SC 和SSB 的信号和频谱。 (2) 调频信号仿真 根据调频原理,仿真调频波。 基本要求:载波频率为30KHz ,调制信号为1KHz ,调频灵敏度32310f k π=??,仿真调制信号,瞬时角频率,瞬时相位偏移的波形。 扩展要求:调制信号改为1KHz 的方波,其它条件不变,完成上述仿真。 2. 说明 (1) 仿真的基本要求每位同学都要完成,并且记入实验基本成绩。 (2) 扩展要求可以选择完成。

1.0 >> ma = 0.3; >> omega_c = 2 * pi * 8000; >> omega = 2 * pi * 400; >> t = 0 : 5 / 400 / 1000 : 5 / 400; >> u_cm = 1; >> fc = cos(omega_c * t); >> fa = cos(omega * t); >> u_am = u_cm * (1 + fa).* fc; >> U_c =fft(fc,1024); >> U_o =fft(fa,1024); >> U_am =fft(u_am, 1024); >> figure(1); >> subplot(321);plot(t, fa, 'k');title('调制信号');grid;axis([0 2/400 -1.5 1.5]); >> subplot(323);plot(t, fc, 'k');title('高频载波');grid;axis([0 2/400 -1.5 1.5]); >> subplot(325);plot(t, u_am, 'k');title('已调信号');grid;axis([0 2/400 -3 3]); >> fs = 5000; >> w1 = (0:511)/512*(fs/2)/1000; >> subplot(322);plot(w1, abs([U_am(1:512)']),'k');title('调制信号频谱');grid;axis([0 0.7 0 500]); >> subplot(324);plot(w1, abs([U_c(1:512)']),'k');title('高频载波频谱');grid;axis([0 0.7 0 500]); >> subplot(326);plot(w1, abs([U_am(1:512)']),'k');title('已调信号频谱');grid;axis([0 0.7 0 500]); 1.1 >> ma = 0.8; >> omega_c = 2 * pi * 11138; >> omega = 2 * pi * 138; >> t = 0 : 5 / 400 / 1000 : 5 / 400; >> u_cm = 1; >> fc = cos(omega_c * t);

Matlab程序设计实验报告

实验七Matlab 程序设计 实验目的: 1、掌握建立和执行M 文件的方法; 2、掌握实现选择结构的方法; 3、掌握实现循环结构的方法。 实验内容: 1. 编写用 5 次多项式拟合函数y=sin(x), x [0, 2 ]的脚本M 文件,要求绘图观察拟合的效果。 function shiyan1 x=0:0.5:2*pi y=sin(x) p=polyfit(x,y,5) x1=0:0.2:2*pi y1=polyval(p,x1) plot(x,y, 'b' ,x1,y1, '*r' x =

Columns 1 through 9 0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 Columns 10 through 13 4.5000 5.0000 5.5000 6.0000 y = Columns 1 through 9 0 0.4794 0.8415 0.9975 0.9093 0.5985 0.1411 -0.3508 -0.7568 Columns 10 through 13 -0.9775 -0.9589 -0.7055 -0.2794 p = -0.0056 0.0881 -0.3967 0.2671 0.8902 0.0029 x1 = Columns 1 through 10 0 0.2000 0.4000 0.6000 0.8000 1.0000 1.2000 1.4000 1.6000 1.8000 Columns 11 through 20

2. 2.2000 2.4000 2.6000 2.8000 3.0000 3.2000 3.4000 3.6000 1.8001 Columns 21 through 30 4.0 4.2000 4.4000 4.6000 4.8000 5.0000 5.2000 5.4000 5.6000 5.8000 Columns 31 through 32 6.0 6.2000 y1 = Columns 1 through 10 0.29 0.1886 0.3786 0.5585 0.7172 0.8461 0.9391 0.9926 1.0048 0.9761 Columns 11 through 20 0.9083 0.8048 0.6701 0.5098 0.3301 0.1381 -0.0590 -0.2538 -0.4389 -0.6073 Columns 21 through 30 -0.7524 -0.8685 -0.9505 -0.9949 -0.9991 -0.9626 -0.8863 -0.7732 -0.6288 -0.4606 Columns 31 through 32

MATLAB仿真实验报告

MATLA仿真实验报告 学院:计算机与信息学院 课程:—随机信号分析 姓名: 学号: 班级: 指导老师: 实验一

题目:编写一个产生均值为1,方差为4的高斯随机分布函数程序, 求最大值,最小值,均值和方差,并于理论值比较。 解:具体的文件如下,相应的绘图结果如下图所示 G仁random( 'Normal' ,0,4,1,1024); y=max(G1) x=mi n(G1) m=mea n(G1) d=var(G1) plot(G1);

实验二 题目:编写一个产生协方差函数为CC)=4e":的平稳高斯过程的程序,产生样本函数。估计所产生样本的时间自相关函数和功率谱密度,并求统计自相关函数和功率谱密度,最后将结果与理论值比较。 解:具体的文件如下,相应的绘图结果如下图所示。 N=10000; Ts=0.001; sigma=2; beta=2; a=exp(-beta*Ts); b=sigma*sqrt(1-a*a); w=normrnd(0,1,[1,N]); x=zeros(1,N); x(1)=sigma*w(1); for i=2:N x(i)=a*x(i-1)+b*w(i); end %polt(x); Rxx=xcorr(x0)/N; m=[-N+1:N-1]; Rxx0=(sigma A2)*exp(-beta*abs(m*Ts)); y=filter(b,a,x) plot(m*Ts,RxxO, 'b.' ,m*Ts,Rxx, 'r');

periodogram(y,[],N,1/Ts); 文件旧硯化)插入(1〕 ZMCD 克闻〔D ]窗口曲) Frequency (Hz) 50 100 150 200 250 300 350 400 450 500 NH---.HP)&UO 二 balj/ 」- □歹

Matlab 编程方法及仿真实验

《现代机械工程基础实验》之机械工程控制基础综合实验报告 姓名 学号 班级 山东建筑大学机电工程学院 2012.06.04~06

第一部分 Matlab 编程方法及仿真实验 实验1. 三维曲面的绘制(略) 实验2. 系统零极点绘制例:求部分分式展开式和)(t g 一个线性定常系统的传递函数是 1 5422 3)(2 3 ++++= s s s s s G (1) 使用MATLAB 建立传递函数,并确定它的极点和零点,写出)(s G 的部分分式展开式并绘制 系统的脉冲响应。 实验结果:零点-0.6667 极点-0.8796 + 1.1414i -0.8796 - 1.1414i -0.2408 实验3. 系统的阶跃响应 例. )(s G 的阶跃响应 对例2中由(1)式给出的传递函数)(s G ,增加一个0=s 处的极点,使用impulse 命令绘制其拉普拉斯反变换式曲线,得到阶跃响应图。将该响应与对)(s G 使用step 命令所得到的响应比较,确定系统的DC 增益。利用初值定理和终值定理来校验结果。 实验结果:DC 增益= 2

实验4. 双输入反馈系统单位阶跃响应 考虑一个如图1所示的反馈系统,它既有参考输入也有干扰输入,其中对象和传感器的传递函数是 )12)(15.0(4)(++=s s s G p ,105.01 )(+=s s H 控制器是一个增益为80,有一个在3-=s 处的零点,极点/零点比15=α超前控制器。推导 两个独立的MATLAB 模型,其中一个模型的输入为)(s R ,另一个输入为)(s D 。使用这些模型确定闭环零点和极点,并在同一坐标系内绘制它们的阶跃响应。 D (s ) 图1 具有参考和干扰输入的反馈系统方框图 实验结果: 参考输入的CL 极点:-49.3658 -7.3336 + 7.9786i -7.3336 - 7.9786i -3.4670 参考输入的DC 增益:320 干扰输入的CL 零点:-45 干扰输入的CL 极点:-49.3658 -7.3336 + 7.9786i -7.3336 - 7.9786i -3.4670 干扰输入的DC 增益:4 -20

D实验五 M文件和MATLAB程序设计

实验五M文件和MATLAB程序设计 一、实验目的 matlab作为一种高级计算机语言,不仅可以命令行方式完成操作,也具有数据结构、控制流、输入输出等能力,本次实验通过熟悉和掌握m文件的建立与使用方法,以及函数与控制程序流程语句的使用,使学生具备一定的编程和程序调试能力。 1.掌握M文件的使用方法。 2.掌握if语句和switch语句的使用 3. 掌握循环语句的使用 4. 通过练习理解MATLAB编程方法。 二、实验原理 1.m文件 用matlab语言编写的程序,称为m文件。M文件根据调用方式的不同分为两类,命令文件(Script file)和函数文件(Function file)。区别? 2.程序控制结构 1)顺序结构 2)选择结构 (1)if语句a) 单分支if语句b) 双分支if语句c) 多分支if语句 (2)switch 语句 (3)try语句 3)循环结构 (1)for 语句 (2)while语句 (3)break语句、continue语句、return使用,区别? 3.函数文件 function 输出形参表=函数名(输入形参表) 注释说明部分 函数体语句 注意事项? 三、实验要求 1.首先上机练习PPT中各种流程控制语句的有关实例。 2.然后上机练习下面的实验习题。 四、实验习题

1.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 2→1 3→10→5→16→8→4→2→1 6→3→10→5→16→8→4→2→1 运行下面的程序,按程序提示输入n=1,2,3,5,7,8,9等数来验证这一结论。 %classic "3n+1" problem from number theory. while 1 n=input('Enter n,negative quits:'); if n<=0 break end a=n; while n>1 if rem(n,2)==0 n=n/2; else n=3*n+1; end a=[a,n]; end a end Enter n,negative quits: 2. 编程求满足∑=>m i i 11000020的最小m 值。 a=0; i=1; while (a<100000) a=a+pow2(i); i=i+1; end m=i-1 3. 编写一个函数,计算下面函数的值,给出x 的值,调用该函数后,返回y 的值。 function [y]=myfun1(x)

Matlab仿真实验教程

MATLAB的实验仿真 目录 实验一MATLAB在控制系统模型建立与仿真中的应用 (1) 实验二典型系统的时域响应分析 (13) 实验三线性控制系统的根轨迹与频域分析 (17) 实验四线性系统的校正 (22) 附录一 MATLAB6.5 控制系统工具箱函数和结构化的控制语句 (30) 附录二 SIMULINK 基本模块介绍 (34)

实验一 MATLAB 在控制系统模型建立与仿真中的应用 一、 MATLAB 基本操作与使用 1. 实验目的 1) 掌握MATLAB 仿真软件的安装及启动,熟悉 MATLAB 工作环境平台。 2) MATLAB 命令窗口,包括工具条以及菜单选项的使用;MATLAB 语言的基本规定,包括数值的表示、变量命名规定、基本运算符、预定义变量以及表达式等。 3) MATLAB 图形绘制功能、M 文件程序设计和线性控制系统传递函数模型的建立等。 2. 实验仪器 PC 计算机一台,MATLAB 软件1套 3. 实验内容 1) MATLAB 的启动 这里介绍MATLAB 装入硬盘后,如何创建MATLAB 的工作环境。 方法一 MATLAB 的工作环境由matlab.exe 创建,该程序驻留在文件夹matlab\bin\ 中。它的图标是 matlab 。只要从<我的电脑>或<资源管理器>中去找这个程序,然后双击此图标,就会自动创建如图1所示的MATLAB6.5 版的工作平台 。 图1 在英文Windows 平台上的MATLAB6.5 MATLAB 工作平台 方法二 假如经常使用MATLAB ,则可以在Windows 桌面上创建一个MATLAB 快捷方式图标。具体办法为: 把<我的电脑>中的 matlab 图标用鼠标点亮,然后直接把此图标拖到Windows 桌面上即可。此后,直接双击Windows 桌面上的matlab 图标,就可建立图1所示的 MATLAB 工作平台。 2) MATLAB 工作环境平台 桌面平台是各桌面组件的展示平台,默认设置情况下的桌面平台包括 6 个窗口,具体如下: ① MATLAB 窗口 Command Window

相关文档
最新文档