第八次课 讲稿Word文档格式.docx

上传人:b****7 文档编号:21945680 上传时间:2023-02-01 格式:DOCX 页数:18 大小:74.66KB
下载 相关 举报
第八次课 讲稿Word文档格式.docx_第1页
第1页 / 共18页
第八次课 讲稿Word文档格式.docx_第2页
第2页 / 共18页
第八次课 讲稿Word文档格式.docx_第3页
第3页 / 共18页
第八次课 讲稿Word文档格式.docx_第4页
第4页 / 共18页
第八次课 讲稿Word文档格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

第八次课 讲稿Word文档格式.docx

《第八次课 讲稿Word文档格式.docx》由会员分享,可在线阅读,更多相关《第八次课 讲稿Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。

第八次课 讲稿Word文档格式.docx

杂的问题,应编写成能存储的程序文件。

m文件模式

将matlab语句构成的程序存储成以m为扩展名的文

件,然后再执行该程序文件,这种工作模式称为程

序文件模式。

程序文件不能在指令窗口下建立,因为指令窗口只

允许一次执行一行上的一个或几个语句。

二、m文件的创建

m文件的类型是普通的文本文件,我们可以使用系统认可的文本文件编辑器来建立m文件。

如dos下的edit,windows的记事本和word等。

具体的创建方法:

在matlab命令窗

口点击file菜单

newm-file

保存:

2.点击file—SaveWorkspaceAs

将工作空间中的内容存入文件。

3.!

edit——用dos下edit编辑器编制m文件。

4.edit——用matlab自带的编辑器编制m文件。

5.word——用word编辑m文件。

注意:

所创建的m文件必须纳入matlab搜索路径后,才能在matlab命令窗口运行。

三、M文件的特点与形式

1.M文件的特点:

MATLAB是一种解释性语言,就MATLAB本身而言,它并不能做任何事情,只对用户发出的指令起解释执行作用。

用户可以把所要实现的指令罗列编制成文件,再统一送入MATLAB系统中解释运行,这就是M文件。

此文件必须以m为扩展名,MATLAB系统才能识别。

也就是说,M文件其实是一个像命令集一样的ASCII(纯文本)码文件。

因此M文件语法简单,调试容易,人机交互性强。

用户可以使用任何字处理软件对其进行编写和修改。

2.M文件的两种形式命令式(Script)

函数式(Function)

命令式文件就是命令行的简单叠加,MATLAB会自动按顺序执行文件中的命令。

函数式文件主要用以解决参数传递和函数调用的问题,它的第一句以function语句为引导。

(一)、命令式文件

用户在编制命令式文件时,只需把所要执行的命令按行编辑到指定的文件中,且变量不需要预先定义,也不存在文件名对应问题,但要注意以下几点:

1)标点符号的运用要恰到好处;

2)建立好的书写风格,保持程序的可读性;

3)不要忘记m为文件的扩展名。

例5.1建立一命令集以实现绘制LOGO图。

在Medit窗口中编写以下内容。

%logotu.m

loadlogo%加载logo

surf(L,R),%三维图形

colormap(M)%颜色映像函数,M—三列矩阵,三者综合构成对应颜色

n=size(L,1)

axisoff

axis([1n1n-.2.35])

view(-37.5,60)%视角函数

title(‘LifeistooshorttospendwritingDOloops…’)

>

>

logotu

说明:

1)以符号%引导的是注释行,不可执行,可供help命令查询;

2)不需要用end语句作为M文件的结束标志;

3)在运行此文件之前,需要把它所在目录加到MATLAB的

搜索路径上去,或将文件所在目录设为当前目录。

(二)、函数式文件

1.函数:

为了实现计算中的参数传递,需要用到函数式文件。

函数

式的标志是第一行为function语句。

函数式文件可以有返

回值,也可以只执行操作而无返回值。

函数式文件执行

后,只保留最后结果,不保留任何中间结果,所定义的变

量也仅在函数内部起作用,并随调用的结束而被清除。

例:

下面是一个MATLAB提供的上下翻转矩阵的函数,文件名是flipud.m

functiony=flipud(x)

%FLIPUDFlipmatrixinup/downdirection.

%FLIPUD(X)returnsXwithcolumnspreservedandrowsflippedin

%theup/downdirection.Forexample,

%x=14becomes36

%2525

%3614

%SeealsoFLIPLR,ROT90,FLIPDIM.

ifndims(x)~=2,error(‘Xmustbea2-Dmatrix,’);

end

%判断输入矩阵维数是否正确

[m,n]=size(x);

%求输入矩阵的大小

y=x(m:

-1:

1,:

);

%将矩阵上下翻转

2.函数的结构

函数M文件由以下几个部分组成:

1)函数定义行;

2)H1行

3)函数帮助文本

4)函数体

5)注释

输出参数

函数名

函数flipud的定义行是:

functiony=flipud(x)

输入参数

 

•H1行:

是指帮助文本的第一行,它紧跟在定义行之后。

它以“%”符号开头,用于总结说明函数名和函数的功能。

函数flipud的H1行为:

%FLIPUDFlipmatrixinup/downdirection

lookfor命令查询时,在窗口中显示的内容。

•帮助文本:

位于在H1行之后函数体之前的说明文本,以“%”符号开头,一般用来比较详细地介绍函数的功能和用法。

help命令查询时,可以显示的内容。

•函数体:

是函数的主体部分,函数体包括进行运算和赋值操作的所有MATLAB程序代码。

•注释:

除了函数开始的帮助文本外,还可以在函数体中添加对语句的注释。

注释必须以“%”开头。

一、循环语句

MATLAB提供两种循环方式for

while

1.for循环

循环的判断条件是对循环次数的判断,也就是说,在一般情况下,循环语句的循环次数是预先设定好的。

for循环语句的一般格式:

forv=expression(表达式)

statements(执行语句)

end

该语句首先将一个表达式赋予一个变量,表达式的通常格式为m:

n或m:

i:

n,然后按照表达式的列来执行for和end之间的语句。

form=2:

5

S(m)=m*2+1

S=

05

057

0579

057911

•for语句一定要有end作为结束标志,否则下面的输入都被认为是for循环之内的内容;

•循环语句中的分号“;

”可防止中间结果的输出;

•循环语句书写成锯齿形将增加可读性;

•如果m或n有小于1的值,结构上仍然是合法的,但内部并不运行。

设有向量t,t=[-10135]’,由此生成一个5*5阶的Vandermonde(范德蒙)矩阵。

程序

(1)如下:

(双循环语句)

n=max(size(t));

forj=1:

n

forI=1:

a(I,j)=t(I)^(n-j)

程序

(2)如下:

(向量运算的单循环语句)

a(:

n)=ones(n,1);

forj=n-1:

1

j)=t’.*a(:

j+1);

2.while循环

与for不同的是,while循环不能指定循环的次数,语句的判断控制是一个逻辑判断语句,当表达式里的所有元素为真时,就执行while和end语句之间的程序代码。

一般格式:

whileexpression

statements

end

例:

用计算形式计算矩阵的幂(expm_a)

用expm(A)=I+A+A2/2!

+A3/3!

+…求A的指数函数

程序如下:

functionexpm_a(a)

%由expm(A)=I+A^2/2!

+A^3/3!

+...计算A的指数函数

e=zeros(size(a));

f=eye(size(a));

k=1;

whilenorm(e+f-e,1)>

0%求矩阵的1范数,

e=e+f;

f=a*f/k;

k=k+1;

e

二、选择语句

MATLAB提供了if_else_end语句来进行判断选择,if语句大致可分为三个步骤:

1)判断语句紧跟在关键字if后面,它首先被计算;

2)判断表达式计算结果,若结果为0,判断值为假;

若结果为

1,判断值为真;

3)若判断值为真,则执行其后的执行语句,否则跳过,不予执行。

选择语句的一般形式:

ifexpression()

statements;

elseexpression()

B样条函数的判断函数

functionf=pdbsline(x)

ifx<

f=0;

elseifx<

f=x;

2

f=2-x;

else

说明:

1)else部分可以是复合语句或其它控制语句;

2)注意if语句嵌套时,if和else必须对应,否则容易出错;

3)else子句中嵌套if时,就形成了elseif结构,可以实现多路选择结构。

三、分支语句switch-case-otherwise

switch-case-otherwise语句实现在多种情况(case)下的开关控制,以执行分支结构。

通用格式如下:

switchswitch_expr

casecase_expr,

statement,…,statement

case{case_expr1,case_expr2,case_expr,…}

…..

otherwise,

其中switch_expr给出了开关条件。

当case_expr的内容与之匹配时则执行其后的语句。

如果没有case的内容与switch_expr的内容匹配,则执行otherwise后面的语句。

注意:

在执行过程中,只执行一个case后面的命令并跳出开关,程序在end后面继续执行。

四、人机交互语句

1.echo命令

一般情况下,M文件执行时,文件中的命令不会显示在命令窗口中。

echo命令可使文件命令在执行时可见。

其格式如下:

echoon打开命令式文件的回应命令;

echooff关闭回应命令;

echofileon使指定的file文件的命令在执行中被显示出来;

echofileoff关闭指定文件的命令在执行中的回应;

echofile文件在执行中的回应显示开头;

echoonall/echooffall显示/关闭其后所有执行文件的执行过程。

2.用户输入提示命令inputyesinput

input命令用来提示用户从键盘输入数据、字符串或表达式,并接收输入值。

下面是几种常用的格式:

R=input(‘Howmanyapples’)

R=input(‘Whatisyourname?

’s’)

yesinput是一个智能输入命令,它带有默认输入和默认输入的范围检查。

此命令通用格式为:

answer=yesinput(question,default,possib)

检验范围

默认值

问题

yesinput命令演示之一

order=yesinput(‘Orderofthefilter’,10,[012]);

运行此命令后,结果如下:

Orderofthefilter(10):

-9

14

3

order=3

yesinput演示命令之二

color=yseinput(‘Colorusedontheplot’,’red’,’red|blue|green’);

Colorusedontheplot(red):

white

red

color=red

3.请求键盘输入命令keyboard

keyboard和input作用相似,当程序遇到此命令时,MATLAB就将暂时停止运行程序并处于等待键盘输入状态。

处理完毕后,键入R,程序将继续运行。

4.等待用户反应命令pause

此命令用于使程序暂时中止运行,等待用户按任意键后继续执行。

调用格式如下:

pause暂停程序等待回应;

pause(n)程序运行中等待n秒后继续运行;

pauseon显示其后的pause命令,并且执行pause命令;

pauseoff显示其后的pause命令,但不执行pause命令。

5.中断命令break

break语句常常用在循环语句或条件语句中。

通过使用break语句,可不必等待循环的自然结束,而根据循环另设的条件来判断是否跳出循环。

求鸡兔同笼问题:

鸡兔同笼,头共36,脚共100。

求鸡、兔各多少?

在MATLAB中输入以下语句:

i=1;

while1

ifrem(100-i*2,4)==0&

(i+(100-i*2)/4)==36

break;

i=i+1

a1=i

a2=(100-2*i)/4

在MATLAB语言的函数中,变量主要有输入变量、输出变量及函数内所使用的变量。

输入变量相当于函数的入口变量,也是一个函数操作的主要对象。

某种程度上讲,函数的作用就是对输入变量进行操作以实现一定的功能。

MATLAB语言提供了一些对输入变量进行控制的函数,如:

nargin、varargin、inputname.

•nargin控制输入变量的个数;

返回输入变量的个数。

编制一个函数,函数名为test69,它实现如下功能,如果调用过程中时只提供一个输入变量,则求该输入变量的模,如果有两个输入变量则求两个输入变量的和,程序如下:

functionc=test69(a,b)

if(nargin==1)

c=det(a);

elseif(nargin==2)

c=a+b;

nargin(‘function’)返回函数的输入变量的个数。

•varargin实现不定数目输入变量的函数的程序设计。

编制一个函数,函数名为test610,它可以实现如下功能:

通过使用函数varargin,用户可以输入任意多个学生的数学、英语及语言的成绩,然后求各科目的平均值。

程序如下:

function[mathavg,englishavg,chineseavg]=test610(varargin)

l=length(varargin)

mathsum=0;

englishsum=0;

chinesesum=0;

fori=1:

l

mathsum=mathsum+varargin{i}

(1)

englishsum=englishsum+varargin{i}

(2)

chinesesum=chinesesum+varargin{i}(3)

mathavg=mathsum/l

englistavg=englishsum/l

chineseavg=chinesesum/l

•inputname(inputvarno)略

与输入变量相应,MATLAB对输出变量也提供了相应的函数,如narout,varargout等。

具体的使用方法与函数nargin,varargin相似。

在MATLAB语言中,函数内部定义的变量均为局部变量,即不加载到工作空间中。

如果需要使用全局变量,则应当使用命令global定义,而且在任何使用该全局变量的函数中都应加以定义,在命令窗口中也不例外。

全局变量的示例。

见test612.M函数

在命令窗口也定义相应的全局变量。

globalfirstlevelsecondlevel

firstlevel=85;

secondlevel=75;

[num,num2,num3]=test612([908960],[798960],[9998100])

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

当前位置:首页 > 工程科技 > 兵器核科学

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

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