MATLAB实验指导书Word文档格式.docx

上传人:b****1 文档编号:393947 上传时间:2023-04-28 格式:DOCX 页数:33 大小:432.63KB
下载 相关 举报
MATLAB实验指导书Word文档格式.docx_第1页
第1页 / 共33页
MATLAB实验指导书Word文档格式.docx_第2页
第2页 / 共33页
MATLAB实验指导书Word文档格式.docx_第3页
第3页 / 共33页
MATLAB实验指导书Word文档格式.docx_第4页
第4页 / 共33页
MATLAB实验指导书Word文档格式.docx_第5页
第5页 / 共33页
MATLAB实验指导书Word文档格式.docx_第6页
第6页 / 共33页
MATLAB实验指导书Word文档格式.docx_第7页
第7页 / 共33页
MATLAB实验指导书Word文档格式.docx_第8页
第8页 / 共33页
MATLAB实验指导书Word文档格式.docx_第9页
第9页 / 共33页
MATLAB实验指导书Word文档格式.docx_第10页
第10页 / 共33页
MATLAB实验指导书Word文档格式.docx_第11页
第11页 / 共33页
MATLAB实验指导书Word文档格式.docx_第12页
第12页 / 共33页
MATLAB实验指导书Word文档格式.docx_第13页
第13页 / 共33页
MATLAB实验指导书Word文档格式.docx_第14页
第14页 / 共33页
MATLAB实验指导书Word文档格式.docx_第15页
第15页 / 共33页
MATLAB实验指导书Word文档格式.docx_第16页
第16页 / 共33页
MATLAB实验指导书Word文档格式.docx_第17页
第17页 / 共33页
MATLAB实验指导书Word文档格式.docx_第18页
第18页 / 共33页
MATLAB实验指导书Word文档格式.docx_第19页
第19页 / 共33页
MATLAB实验指导书Word文档格式.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

MATLAB实验指导书Word文档格式.docx

《MATLAB实验指导书Word文档格式.docx》由会员分享,可在线阅读,更多相关《MATLAB实验指导书Word文档格式.docx(33页珍藏版)》请在冰点文库上搜索。

MATLAB实验指导书Word文档格式.docx

历史指令窗(CommandHistory),该窗记录已经运行过的指令、函数、表达式;

允许用户对它们进行选择复制、重运行,以及产生M文件。

工作空间浏览器(WorkspaceBrowser),该窗口罗列出MATLAB工作空间中所有的变量名、大小、字节数;

并且在该窗中,可对变量进行观察、编辑、提取和保存。

其它还有当前目录浏览器(CurrentDirectoryBrowser)、M文件编辑/调试器(Editor/Debugger)以及帮助导航/浏览器(HelpNavigator/Browser)等,但通常不随操作界面的出现而启动。

利用File菜单可方便对文件或窗口进行管理。

其中File|New的各子菜单,M-file(M文件)、Figure(图形窗口)、或Model(Simulink编辑界面)分别可创建对应文件或模块。

Edit菜单允许用户和Windows的剪切板交互信息。

MATLAB语言最基本的赋值语句结构为:

变量名列表=表达式。

表达式由操作符或其它字符,函数和变量名组成,表达式的结果为一个矩阵,显示在屏幕上,同时输送到一个变量中并存放于工作空间中以备调用。

如果变量名和“=”省略,则ans变量将自动建立,例如键入:

1900/81,得到输出结果:

ans=23.4568。

MATLAB中变量命名的原则要求必须以英文字母开头,文件夹名字中可以还包括、下划线和数字,不要使用其他的字符,更不要单纯使用数字或者中文名命名,有时在运行MATLAB中一些莫名的错误可能就是不规范的命名引起的。

这种规则包括将来为自己编写的脚本文件、函数文件命名以及为使用的变量命名也应遵循这个规则。

[实验内容]

一.用户工作目录和当前目录的建立和设置

1.为管理方便,每个用户在使用MATLAB前,尽量为自己建立一个专门的工作目录,即“用户目录”,用来存放自己创建应用文件。

例如首先打开资源管理器,在E驱动器下可以根据自己喜好建立一个新文件夹,但应注意:

该文件夹必须以英文开头,文件夹名字中可以包括字母、下划线和数字,不要使用其他的字符,更不要单纯使用数字或者中文名命名,有时在运行MATLAB中一些莫名的错误可能就是不规范的命名引起的,这与MATLAB中为变量和文件名命名原则是一致的。

尽管MATLAB\work允许用户存放用户文件,但最好把它仅作为临时工作目录来使用。

2.为了用户运行方便,在开始工作前可把用户定义的目录设置为当前目录,方法是可直接在MATLAB命令窗口桌面上方通过目录设置栏来实现。

3.把自己的工作目录加到MATLAB搜索路径上,这样可以在任何情况下方便地调用自己的编写文件。

MATLAB工作时,基本搜索过程为:

首先在工作空间,即MATLAB内存中进行检查,看输入的指令是不是变量;

如不是,则检查输入指令是不是内建函数(比如sin函数等);

如不是,则在当前目录上,检查是否有与输入指令相同的M文件存在;

如还没有,则在MATLAB定义的搜索路径其他目录中,检查是否有该M文件存在。

设置方法是通过File菜单下设置路径对话框进行。

二.熟悉简单的矩阵输入

1.从屏幕上输入矩阵A=[123;

456;

789]回车

A=[1,2,3;

4,5,6;

7,8,9]回车

观察输出结果。

2.试用回车代替分号,观察输出结果。

3.输入size(A),观察结果。

4.输入矩阵B=[9,8,7;

6,5,4;

3,2,1];

回车

输入矩阵C=[4,5,6;

7,8,9;

1,2,3];

回车,然后分别键入ABC回车观察结果。

5.选择File|new菜单中的M-file,输入B=[9,8,7;

3,2,1];

保存为BF.M文件,退出编辑环境。

此时在工作环境中使用BF命令就可调出B矩阵(先用clear清除原工作区内容)。

6.再试着输入一些矩阵,矩阵中的元素可为任意数值表达式,但注意:

矩阵中各行各列的元素个数需分别相等,否则会给出出错信息。

7.输入who和whos观察结果,了解其作用。

三.常用基本命令的使用

数据文件的存取训练:

利用save和load指令可以方便地把当前工作空间的数据变量保存为数据文件。

接题一,输入:

savea回车,表示把当前工作空间的所有变量保存为a.mat文件。

输入saveaAC回车,表示把当前内存中的变量A、C保存为a.mat文件。

类似的还有load命令,实现保存数据变量的装载,执行clear命令,然后运行loada回车,观察工作空间的变化。

save、load、clear命令还有一些其他的应用格式,具体可参看帮助文件。

四.基本序列运算

1.数组的加减乘除和乘方运算

2.输入A=[123],B=[456],求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B,并用stem画出A,B,C,D,E,G。

再输入一些数组,进行类似运算。

3.在命令窗口用plot指令粗略描绘下列各函数的波形(其中对于连续信号可取时间间隔为0.001,可参看下面的a的实例来实现,数学函数MATLAB实现参见附录)

a.

实现方法,在命令窗口执行一下指令,可简单描绘出函数曲线:

t=0:

.001:

3;

y=3-exp(-t);

plot(t,y)

b.

c.

d.

在MATLAB中用pi来实现,a要取一个确定的值)

f.

实验二数值数组创建、应用及可视化

1.掌握二维数组的创建、寻访,区分数组运算与矩阵运算的区别。

2.掌握标准数组生成函数和数组构造技法。

3.进一步熟悉M脚本文件编写的方法和技巧。

数值数组和数组运算MATALB核心内容,是MATLAB最重要的一种内建数据类型。

通常,数组是由一组实数或复数排成的长方阵列(Array),它可以是一维的“行”或“列”,可以是二维的“矩形”,也可是三维的若同维矩形的堆叠,甚至是更高的任意维。

而数组运算是指无论在数组上施加什么运算(加减乘除或函数),总认定那种运算对被运算数组中的每个元素(Element)平等地时实施同样的操作。

这使得计算程序简单、易读,使程序指令更接近教科书上的数学计算公式,并提高了程序的向量化程度,提高计算效率,节省计算机开销。

一维数组的创建可采用逐个元素输入法,这是最简单,但又最通用的构造方法,如:

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

另外有规律的产生数组可以采用冒号生成法,通用格式是x=a:

inc:

b,a是数组的第一个元素,inc是采样点之间的步长。

若(b-a)是inc的整数倍,则生成数组的最后一个元素是b,否则小于b。

或者采用定数线性采样法,该法是在设定“总点数”下,均匀采样生成一维“行”数组。

格式为x=linspace(a,b,n),a、b分别是生成数组的第一个各最后一个元素,n是采样总点数,该指令生成(1×

n)数组。

二维数组是由实数或复数排列成矩形而构成的。

从数据结构上看,矩形和二维数组没有什么区别。

当二维数组带有线性变换含义时,该二维数组就是矩阵。

二维数组的创建也可采用直接输入法,或者利用构造M文件创建和保存数组。

除此以外,还可以采用MATLAB提供的标准函数生成我们需要的数组,诸如zeros、ones、rand、eye、diag、magic等,详请见附录。

一维数组元素的寻访和标识采用X(index)方法,只是要注意MATLAB中第一个元素下标index是1,而不是C语言中的0。

二维数组元素的标识和寻访可分为“全下标”标识和“单下标”标识,“全下标”标识,即指出是“第几行,第几列”的元素,如A(3,5)表示二维数组A的第三行第五列元素。

该标识法的优点是几何概念清楚,引述简单,在MATLAB的寻址和赋值中最为常用。

“单下标”标识,顾名思义就是只用一个下标来指明元素在数组中的位置,首先对二维数组的所有元素进行“一维编号”。

“一维编号”是指:

先设想把二维数组的所有列,按先左后右的次序、首尾相接排成“一维长列”,然后自上往下对元素未知进行编号,其优点是简洁、方便,特别是如果碰到对二维数组进行诸如for循环操作时可以减少循环次数,提高编程效率。

“全下标”标识和“单下标”标识可以通过sub2ind和ind2sub指令进行转换,详见帮助。

另外,不论二维数组还是一维数组还可以采用“逻辑1”标识,这种方法常用于寻找数组中所有大于或小于某值的元素的问题中。

比如X(abs(X)>

3)可以找出数组X中所有绝对值大于3的元素。

另外还可以借助ones,zeros,rand,randn和cat,repmat,reshape等函数直接或间接构作高维数组,详见附录或MATLAB帮助。

Matlab中的许多函数可以直接对任意维的数组直接运算,相当于对数组中的每个元素分别进行运算。

比如Y=sin(X)可以直接得到与数组X中每一个元素相对应的的正弦值,这大大简化了编程。

可以执行数组运算的常用函数已经列表于附录中,以供参考。

但值得注意的是,虽然从外观形状和数据结构上看,二维数组和(数学中的)矩阵)没有区别,但矩阵作为一种变换或映射算子的体现,矩阵运算有着明确而严格的数学规则。

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

为了区别数组和矩阵运算,在易混淆的地方,数组运算在运算符前加一小黑点“.”以示区别,比如Y=A.*B,代表的示数组A和数组B对应元素相乘,而Y=A*B,则表示内维相同的矩阵A和B的乘积。

由此也可看出,在执行数组与数组的运算时,参与运算的数组必须同维,运算所得结果也总与原数组同维。

本节只涉及数组可视化方法的简单实现。

通常,对于离散数据可采用stem命令或者使用plot绘点的方法,而对于连续函数可直接采用plot指令来实现。

一.数组的创建和寻访

1.一维数组在命令窗口执行下面指令,观察输出结果,体味数组创建和寻访方法,%号后面的为注释,不用输入。

rand('

state'

0)%把均匀分布伪随机发生器置为0状态

x=rand(1,5)%产生(1*5)的均布随机数组

x(3)%寻访数组x的第三个元素。

x([125])%寻访数组x的第一、二、五个元素组成的子数组。

x(1:

3)%寻访前三个元素组成的子数组

x(3:

end)%寻访除前2个元素外的全部其他元素。

end是最后一个元素的下标。

x(3:

-1:

1)%由前三个元素倒排构成的子数组

x(find(x>

0.5))%由大于0.5的元素构成的子数组

x([12344321])%对元素可以重复寻访,使所得数组长度允许大于原数组。

x(3)=0%把上例中的第三个元素重新赋值为0。

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

x(3)=[]%空数组的赋值操作

2.二维数组

(1)在命令窗口执行下面指令,观察输出结果

a=2.7358;

b=33/79;

%这两条指令分别给变量a,b赋值。

C=[1,2*a+i*b,b*sqrt(a);

sin(pi/4),a+5*b,3.5+i]%这指令用于创建二维组C

M_r=[1,2,3;

4,5,6],M_i=[11,12,13;

14,15,16]%创建复数数组的另一种方法

CN=M_r+i*M_i%由实部、虚部数组构成复数数组

(2)利用M文件创建和保存下面的数组(分号后面是一个空格后加3个小数点,表示换行续写)AM=[101,102,103,104,105,106,107,108,109;

...

201,202,203,204,205,206,207,208,209;

301,302,303,304,305,306,307,308,309];

(3)仿照问题1中方法找出数组

中所有绝对值大于3的元素。

(4)在命令窗口执行下面指令,体味二维数组的子数组寻访和赋值

A=zeros(2,4)%创建(2*4)的全零数组

A(:

)=1:

8%全元素赋值方式

s=[235];

%产生单下标数组行数组

A(s)%由“单下标行数组”寻访产生A元素组成的行数组

Sa=[102030]’%Sa是长度为3的“列数组”

A(s)=Sa%单下标方式赋值

[23])=ones

(2)%双下标赋值方式:

把A的第2、3列元素全赋为1

(5)在命令窗口执行下面指令,体味数组运算与矩阵运算的区别

clear;

A=zeros(2,3);

6;

%全元素赋值法

A=A*(1+i)%运用标量与数组乘产生复数矩阵

A_A=A.'

%数组转置,即非共轭转置,其中单引号实现转置功能

A_M=A'

%矩阵转置,即共轭转置

二.编写如图所示波形的MATLAB脚本文件,图中虚线为正弦波,要求它分别在

处削顶。

图1

可能用到的额外指令:

find、holdon、holdoff、legend,具体使用方法使用help+指令名来解答。

图例的位置可以简单的用数字代号来指定,也可用location属性值中的具体方位词来指定,具体的属性可以用help查找到;

这里介绍一下简单的数字代号:

0:

自动把图例置于最佳位置,即和图中的曲线重复最少,此时,没改变一次大小,图例都会重新选择一次最佳位置;

-1:

置于坐标轴外面的右上角;

1:

置于图形右上角,为默认值;

2:

置于图形左上角;

3:

置于图形左下角4:

置于图形右下角 

实验三字符串数组的使用、简单脚本文件和函数的编写

1.掌握字符串数组的创建和构造方法及常用字符串函数的使用。

2.熟练掌握MATLAB控制流的使用方法。

3.熟悉M脚本文件、函数文件的编写方法和技巧。

与数值数组相比,串数组在MATLAB中的重要性较小,但不可缺少。

如果没有串数组及相应的操作,那么数据可视化、图形用户界面的制作将会遇到困难。

字符串与数值数组是两种不同的数据类,它们的创建方式也不同。

字符串的创建方式是:

将待建的字符放在“单引号对”中。

注意,“单引号对”必须是在英文状态下输入,其作用是MATLAB识别送来内容“身份”所必需的,如A=’Thisisanexample!

’;

就创建了一个字符串A。

注意创建带单引号的字符串时,每个单引号符用“连续2个单引号符”标识。

字符串的标识同数值数组同,而且也可以使用size指令观察串数组的大小。

串数组的ASCII码可以通过指令abs和double来获取,而用char指令可以把ASCII码变为串数组,另外,MATLAB可以很好的支持中文字符串数组。

对于复杂串数组的创建,一是可以直接创建,但是要保证同一串数组的各行字符数相等,即保证各行等长,不推荐,太繁琐。

二是可以利用串操作函数创建多行数组,比如char,str2mat,strvcat等,具体操作自己通过帮助体会。

另外还可以通过转化函数产生数码字符长,比如A_str=int2str(A)就是把整数数组A转换成串数组,如果是非整数将被四舍五入后再转换,类似的函数还有num2str(把非整数数组转换为串数组,常用于图形中数据点的标识)、mat2str(把数值数组转换成输入形态的串数组,常与eval指令配用)。

假如想灵活运用MATLAB去解决实际问题,想充分调动MATLAB——科学技术资源,想理解MATLAB版本升级所依仗的基础,那么掌握M脚本文件合函数的编写规则将十分有用。

用户通过本次实验,感受抽象概念的内涵、各指令间的协调,从感知上领悟MATLAB编程的优越和要领。

编写M脚本文件的步骤:

点击MATLAB指令窗工具条上的NewFile图标

,就可打开如上图所示的MATLAB文件编辑调试器MATLABEditor/Debugger。

其窗口名为untitled,用户即可在空白窗口中编写程序。

点击编辑调试器工具条图标

,在弹出的Windows标准风格的“保存为”对话框中,选择保存文件夹,键入新编文件名(如newfile.m),点动【保存】键,就完成了文件保存。

运行可有两种方法,一种是直接点击编辑调试工具条图标

,即可直接运行;

或者使newfile.m所在目录成为当前目录,或让该目录处在MATLAB的搜索路径上,然后在命令窗口键入指令newfile+回车,便可得到运行结果。

调试程序方法有多种,常见的是设置断点的方法,将光标移到程序欲执行到的位置,点击编辑调试工具条图标

,保存后运行,程序将停止在该语句位置并弹出编辑器界面等待用户下一步运行的指令,只有再次点击按钮

,才继续向下执行。

相应的按下按钮

,表示清除所有断点。

如果不设置断点,也可以在程序中加入pause指令,使得程序在此处暂停,只有用户按任意键程序才依次向下执行。

则在pause指令的前面位置我们可以通过交互的方式得到我们想要的信息,以检测程序的正确性。

编写MATLAB脚本文件或函数文件时要区分开与C语言格式的不同。

MATALB使用变量前不需要声明数据类型,对于所有的数值型数据MATLAB均以Double型存储。

另外编程时尽量使用MATLAB向量(数组)编程方式,可大大提高编程效率,尽量避免过多使用for循环等语句。

MARLAB提供了五种控制流的结构:

for循环结构,while循环结构,if-else-end分支结构,以及switch-case结果、try-catch结构。

这些控制指令用法与其他语言十分类似,这里只给出简要说明。

For循环:

while循环结构

if-else-end结构

单分支(常用)双分支(常用)多分支(常被switch-case取代)

上面几条控制语句中,for循环结构中x称为循环变量,组命令(commands)被称为循环体,循环体被重复执行的次数是确定的,该次数由for指令后面的数组array的列数决定。

换言之,循环变量依次取数组的各列,对于每个变量值,循环体被执行一次。

while循环是首先检测expression的值,如其值为逻辑真(非0),则执行组命令,当组命令执行完毕,继续检测表达式的值,仍为真,循环执行组命令,一旦表达式值为假,就结束循环。

一般情况下,表达式的值是标量值,但MATLAB允许其为一个数组,此时只有该数组所有元素均为真时,MATLAB才会执行循环体。

若表达式为空数组,则不执行循环体。

if指令判决和break指令的配合使用,可以强制中止for循环或while循环。

switch-case结构try-catch结构

switch指令后面的表达式应为一个标量或者为一个字符串。

对于标量形式的表达式,比较这样进行:

表达式==检测值i。

对于字符串,MATLAB将调用函数strcmp来实现比较:

strcmp(表达式,检测值i)。

try-catch结构,只有当MATLAB在执行组命令1时出现错误后,组命令2才会被执行。

当执行组命令2时又出错,MATLAB将中止该结构。

随指令数的增加或随控制流复杂度的增加,以及重复计算要求的提出,采用M脚本文件进行编程较为适宜。

这种脚本文件的构成比较简单,它是一串按照用户意图排列而成的MATLAB指令集合。

脚本文件运行后,所产生的所有变量都驻留在MATLAB基本工作空间中,只要用户不使用clear指令加以清除,且MATLAB指令窗口不关闭,这些变量将一直保存在基本工作空间中。

脚本文件不同的,函数文件犹如一个“黑箱”。

从外界只能看到传给它的输入量和送出的计算结果,而内部运作是藏而不见的,特点是:

从形式上看,与脚本文件不同,函数文件的第一行总是以“function”引导的“函数声明行”。

该行还罗列出函数与外界的联系的全部“标称”输入输出宗量。

但对“输入输出宗量”的标称数目并没有限制,即可以完全没有输入输出宗量,也可以是任意数目。

形如functionsa=circle(r,s)。

这里r、s称为输入宗量,sa称为输出宗量,函数名为circle,同时注意保存的函数文件名应与这里的函数名一致,即存为circle.m文件。

MATLAB允许使用比“标称”数目较少的输入输出宗量实现对函数的调用,但前提是函数中应该有相应的处理程序。

从运行上看,与脚本文件不同,每当函数文件运行时,MATLAB就会专门为它开辟一个临时的工作空间,称之为函数工作空间。

所有中间变量都存放在函数工作空间中。

当执行完文件最后一条指令或遇到return时,就结束该函数文件的运行,同时该临时函数空间及其所有的中间变量就立即被清除。

假如在函数文件中,发生对某脚本文件的调用,那么该脚本文件运行产生的所有变量都存放在该函数空间中,而不是存放在基本空间。

一.串数

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2