MATLAB程序设计基础.docx

上传人:b****6 文档编号:5023026 上传时间:2022-12-12 格式:DOCX 页数:16 大小:25.20KB
下载 相关 举报
MATLAB程序设计基础.docx_第1页
第1页 / 共16页
MATLAB程序设计基础.docx_第2页
第2页 / 共16页
MATLAB程序设计基础.docx_第3页
第3页 / 共16页
MATLAB程序设计基础.docx_第4页
第4页 / 共16页
MATLAB程序设计基础.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

MATLAB程序设计基础.docx

《MATLAB程序设计基础.docx》由会员分享,可在线阅读,更多相关《MATLAB程序设计基础.docx(16页珍藏版)》请在冰豆网上搜索。

MATLAB程序设计基础.docx

MATLAB程序设计基础

第三章MATLAB程序设计基础

chapter3:

FoundationofMATLABprogramdesign

一、数据及数据文件(DataandDatafile)

1.数据类型:

(Datamode)为适应各种不同计算和处理的需求,MATLAB提供了多种数据类型,主要有:

数值数组(Numericarray)—

包括整形(int8,uint8,int16,uint16,int32,uint32)单精度(signal),双精度(duble)(MATLAB最常用的变量类型),稀疏(sparce)数组。

按维数分有一维、二维和多维数组。

Int---Integrate.

Uint---UnsignedIntegerdata

字符数组(Characterarray):

由字符串组成的数组

单元数组(Cellarray):

用不同类型和大小的数组组成的数组,同一个元胞数组中各元胞的内容可以不同。

结构数组(Structurearray):

与单元数组类似,但其数据的组织能力更强,更富于变化。

Java类(Javaclass):

由JavaAPI或第三方定义的类函数。

函数句柄(Functionhandle):

可以在一个参数列表中传递,并使用feval运行.

在工作空间浏览器中不同的数据类型有着不同的图标标识。

2.数据文件(Datafile)

MATLAB支持的各种数据文件(ReadablefileformatsofMATLAB)的主要类型及其存取方法如下述:

(1)二进制数据文件:

(Binarydatefile)以.mat为扩展名。

是标准的MATLAB数据文件,以二进制编码形式存储。

.mat文件可以由MATLAB提供的save和load命令直接存取。

(2)ASCⅡ码数据文件:

(ASCⅡcodedatafile)扩展名为.txt,.dat等,可以是在MATLAB环境下存储的,也可能是其他软件的计算结果,可以被MATLAB调用,也可以用文本编辑器打开进行观察与修改。

可以用save和load命令进行读入和存取。

(3).图象文件:

(Graphicsfile)扩展名为.bmp,.jpg.tif等,用于图形图象处理,可以用imread和imwrite命令进行读入和存取。

(4).声音文件:

(Soundfile)扩展名为.wav,用waveread和wavwrite命令进行读入和存取。

Readablefileformats.

DataformatsCommandReturns

MAT-MATLABworkspaceloadVariablesinfile.

CSV-CommaseparatednumberscsvreadDoublearray.

DAT-FormattedtextimportdataDoublearray.

DLM-DelimitedtextdlmreadDoublearray.

TAB-TabseparatedtextdlmreadDoublearray.

Spreadsheetformats

XLS-ExcelworksheetxlsreadDoublearrayandcellarray.

WK1-Lotus123worksheetwk1readDoublearrayandcellarray.

Scientificdataformats

CDF-CommonDataFormatcdfreadCellarrayofCDFrecords

FITS-FlexibleImageTransportSystemfitsreadPrimaryorextensiontabledata

HDF-HierarchicalDataFormathdfreadHDForHDF-EOSdataset

Movieformats

AVI-MovieavireadMATLABmovie.

Imageformats

TIFF-TIFFimageimreadTruecolor,grayscaleorindexedimage(s).

PNG-PNGimageimreadTruecolor,grayscaleorindexedimage.

HDF-HDFimageimreadTruecolororindexedimage(s).

BMP-BMPimageimreadTruecolororindexedimage.

JPEG-JPEGimageimreadTruecolororgrayscaleimage.

GIF-GIFimageimreadIndexedimage.

PCX-PCXimageimreadIndexedimage.

XWD-XWDimageimreadIndexedimage.

CUR-CursorimageimreadIndexedimage.

ICO-IconimageimreadIndexedimage.

RAS-SunrasterimageimreadTruecolororindexed.

PBM-PBMimageimreadGrayscaleimage.

PGM-PGMimageimreadGrayscaleimage.

PPM-PPMimageimreadTruecolorimage.

Audioformats

AU-NeXT/SunsoundaureadSounddataandsamplerate.

SND-NeXT/SunsoundaureadSounddataandsamplerate.

WAV-MicrosoftWavesoundwavreadSounddataandsamplerate.

3.数据输入向导(Importwizard)

File菜单下的工具ImportWizard用于将各种类型数据文件中的数据导入工作空间,称为数据输入向导。

在Import对话框中输入需要导入的数据文件名后出现ImportWizard窗口,可预观测将要导入的数据、显示图象、播放声音等。

几种数据的导入:

(1)mat数据文件(matdatafile)

调入途径:

File输入文件名,也可用Browse打开文件浏览器选择输入文件;Clipboard,数据从剪贴板中调入。

窗口内容:

左侧,变量名称、大小、类型。

右侧观察前10行10列信息。

Next:

显示数据输入向导窗口第二页。

(2)ASCⅡ码数据文件:

(ASCⅡcodedatafile)输入ASCⅡ数据文件名---选择显示数据内容(data)或头文本内容(textdata)---选择Next下一页进行导入内容选择(通过钩选决定将何变量导入工作空间)----按Finish完成导入操作或按Cancel终止数据的导入。

(3)图象数据文件:

(Graphicsdatafile)输入图形数据文件名---点击showimage(可在图象上拖曳放大区域)------按Finish完成数据导入(或按Cancel终止数据导入)。

(4)声音数据文件:

(Sounddatafile)输入声音数据文件名---点击PlaySound弹出一个显示声音数据波形的图形窗口(按Playagine按钮重新播放声音,按Done按钮关闭预观察窗口)------按Finish完成数据导入(或按Cancel终止数据导入)。

(5)剪贴板的数据:

(Clipboarddata)需要导入已存放在系统剪贴板中的数据,点数据输入向导窗口中的Clipboard选项,--Next进入下一页--按Finish完成数据导入(或按Cancel终止数据导入)。

二.M文件(M-file)

MATLAB的两种工作方式:

1,交互式命令操作方式(interactivemode)—通过命令窗口进行交互式操作;2,M文件(M-file)的编程工作方式(programmingmode)。

1.M文件编程:

(M-fileprogram)可用普通文本编辑器编制MATLAB文件,文件由纯ASCⅡ字符组成,确定文件名后加.m扩展名,称为M文件。

MATLAB提供了一个方便的编辑/调试器,功能较多,推荐使用。

建立M文件的一般步骤:

(normalprocessofM-filecreating)

(1)打开文件编辑器:

(Openingthefileeditor)最简单的方法是在操作桌面的工具栏上选择新建文件键(NewM-File)或打开已有文件键(OpenFile),也可以在命令窗口输入命令edit建立新文件或输入editfilename,打开名为filename的M文件;

(2)编写程序内容:

(Composetheprogramcontent)编写新的文件或修改已有文件;

(3)保存文件:

(savefile)文件运行前必须完成保存操作,与一般的文件编辑保存操作相同;

(4)运行文件:

(runningfile)在命令窗口输入文件名即可运行。

如要在编辑器中直接完成运行,可在编辑器的Debug菜单下saveandrun选项,或按Run快捷键,最快捷的方法是直接按F5键执行运行。

M文件有两种形式:

命令(脚本)文件(ScriptFile)和函数文件(FunctionFile)

2.命令文件:

(ScriptFile)M文件中最简单的一种,是可用于自动重复执行的一组MATLAB命令和函数组合,不需输出输入参数,用M文件可以调用工作空间已有的变量或创建新的变量。

运行过程中产生的变量都是全局变量。

建立一个命令文件等价于从命令窗口中顺序输入文件里的命令,程序不需要预先定义,只要依次将命令编辑在命令文件中,再将程序保存成为扩展名为.m的M文件即可。

运行命令文件时,只需在命令窗口键入文件名即可。

例:

用三角函数计算画出花瓣图形。

theta=-pi:

0.01:

pi;

rho(1,:

)=2*sin(5*theta).^2;%计算四种不同rho

rho(2,:

)=cos(10*theta).^3;

rho(3,:

)=sin(theta).^2;

rho(4,:

)=5*cos(3.5*theta).^3;

fork=1:

4

Subplot(2,2,k),

polar(theta,rho(k,:

))

end

将程序保存成名为petals的M文件,并运行。

注:

(1)‘%‘引导注释行,不予执行;

(2)不需要用“end”作为M文件的结束标志;

(3)若文件存放在自己的目录上,在运行文件前,应先将自己的目录设置为当前工作目录。

最简单方法:

在当前目录浏览器中设置。

(4)运行后存放在工作空间的变量可以用工作空间浏览器查看。

3。

函数文件(FunctionFile)

如果M文件的第一个可执行行以function开始,便是函数文件,每一个函数文件定义一个函数。

函数文件区别于命令文件之处在于命令文件的变量在文件执行完成后保留在工作空间中,而函数文件内定义的变量只在函数文件内起作用,文件执行完后即被清除。

例:

建立average函数用于计算矢量中单元的平均值。

functiony=average(x)

%AVERAGEMeanofvectorelements.

%AVERAGE(X),WhereXisavector,isthemeanofvectorelement.

%Non-vectorinputresultsinanerror.

[m,n]=size(x);

if(~((m==1)|(n==1))|(m==1&n==1))

error('Inputmustbeavector')

end

y=sum(x)/length(x);

将文件存盘,缺省状态下自动存储名为average.m的函数。

这样只要接受一个输入参数便可计算返回一个输出参数,与其他MATLAB函数一样使用。

例:

用已建立的average函数文件求1~99的平均值。

z=1:

99;

average(z)

函数文件的基本组成部分:

(1)函数定义行:

(thelinesforfunctionidentification)由function引导,并定义函数名、输入参数和输出参数,函数定义行必须放在文件的第一个可执行上。

可以设多个输入输出参数,如:

function[x,y,z]=sphere(theta,phi,rho)

也可以没有输出参数,如:

functionprintresults(x)

(1)H1行:

(LinesH1)lookfor查询时使用的;

(2)帮助文本:

(Helptext)建立在线查询信息;

(3)函数体:

(Functionbody)包含全部的用于完成计算及给输出参数赋值等工作的语句;

(4)注释:

(explanatorynotes)以%起始导行尾结束部分的说明文字。

可放置在程序中的任何部位。

2.局部变量与全局变量(LocalvariableandGlobalvariable)

由M文件定义的一个matlab函数内部所拥有的变量为局部变量,这些变量独立于其他函数的局部变量和工作空间中的变量。

可以用来共享的变量为全局变量。

用global就可以把一个变量定义为全局变量。

MATLAB中变量名是区分大小写的,习惯上常将大写字母定为全局变量。

如:

globalABC

三.程序结构(Structureofprogram)

8种控制程序流程(controlflowstatement)的语句:

for,while,if,switch,try,continue,break,return

1。

循环语句(Loopstatement)

(1)for语句:

forv=表达式通常为一个矢量,形式为:

m:

s:

n(初值:

步长:

終值)

语句体

end

例:

n=10

fori=1:

n

x(i)=(i+1).^2;

end

x

x=

49162536496481100121

例:

嵌套循环:

注意与end的配对。

m=3;n=4;

fori=1:

m

forj=1:

n

a(i,j)=1/(i+j-1);

end

end

formatrat

a=

11/21/31/4

1/21/31/41/5

1/31/41/51/6

例:

运用非1步长,产生0-20以内的偶数

fori=0:

2:

20

a(i/2+1)=i;

end

a

a=

02468101214161820

(2).While语句:

为条件循环语句。

循环不确定次数,只要表达式的逻辑判断结果非零,语句体就重复执行,直到循环条件不成立为止。

While表达式

语句体

end

例:

while循环,求解n!

达到100位数的第一个n是多少。

n=1;

whileprod(1:

n)<1e100

n=n+1;

end

n

n=

70

2.条件语句(Selectionstatement)

(1)if—end语句(simpleifstatement)

if表达式

语句体

End

进行逻辑逻辑判断,当计算的表达式结果为真(非零)时执行语句体,否则跳过if结构。

(2)if—else--end语句

if表达式

语句体1;

else

语句体2:

end

当计算的表达式结果为真时执行语句体1,结果为假时执行语句体2。

例:

判断学生是否通过学业。

if((attendance>=0.90)&(grade>=60))

pass=1;

else

fail=1;

end

(1)if—elseif—end语句

if表达式1

语句体1;

elseif表达式2

语句体2;

else

语句体3;

end

例:

用色彩区分数据点的范围。

n=100;

x=1:

n;

y=randn(1,n);

holdon

fori=1:

n

ify(i)<-1

plot(x(i),y(i),'*g')

elseify(i)>=-1&y(i)<=1

plot(x(i),y(i),'ob')

elseify(i)>=1

plot(x(i),y(i),'xr')

end

end

holdoff

(3)分支语句:

switch—case—end

通过对某个变量值的比较做各种不同的执行选择。

形式:

switch表达式(数字或字符串)

case数字或字符串1

语句体1;

case数字或字符串2

语句体2;

……

otherwise

语句体n;

End

将表达式的值与各case后的值进行比较,与哪一个case的值相同就执行哪一个case下面的语句体,如所有的case值均与之不同,则执行otherwise下面的语句体。

例:

检查input_num的数值.

switchinput_num

case-1

disp(‘negativeone’);%当input_num=-1时显示

case0

disp(‘zero’);%当input_num=0时显示

case1

disp(‘positiveone’);%当input_num=1时显示

otherwise

disp(‘othervalue’);%当input_num等于其他值时显示

end

(4)检测语句:

(Detectstatement)

try-catch语句用于检测错误并改变流程,形式:

try

语句体1

catch

语句体2

end

先执行try下面的语句体1,如没有错误,就跳出该结构,如出错误,则执行catch语句下面的语句体2。

可用lasterr函数查询错误信息,查询结果为空字符串时表示语句体1成功执行。

例:

判断错误语句的用法

n=4;

a=magic(3)

try

a_n=a(n,:

),%取a的第n行元素

catch

a_n=a(end,:

),%如取a的第n行出错,则改取a的最后一行

end

lasterr%显示出错原因

a=

816

357

492

a_n=

492

ans=

Indexexceedsmatrixdimensions.

(5)其他流程控制语句:

(Othercontrolflowstatement)

(a),continue语句:

用于控制for循环和while循环跳过某些执行语句。

在for循环和while循环中,如果出现continue语句,则跳过循环体中所有剩余的语句,继续下一次循环。

例:

continue语句的用法.确定剔除空行和注释行后文件的有效行数

fid=fopen('magic.m','r');%打开文件

count=0;%计数器置零

while~feof(fid)%判断是否到文件末尾

line=fgetl(fid);%从文件中读行

ifisempty(line)|strncmp(line,'%',1)

%判断是否为空行或注释行

continue%如果是空行或注释行继续下一次循环

end

count=count+1;%如果不是空行或注释行计数器加1

end

disp(sprintf('%dlines',count));%显示剔除后的行数

25lines

(b).break语句:

用于终止for循环和while循环的执行.如果遇到break语句,则退出循环体,执行循环体外的下一行语句。

例:

break语句的用法.

fid=fopen(‘fft.m’,’r’);%打开文件

s=’‘;%清空字符数组

while~feof(fid)%判断是否为文件末尾

line=fgetl(fid);%从文件中读行

ifisempty(line)%如果是空行

break%如果是空行退出循环

end

s=strvcat(s,line);%如果不是空行,将该行写入字符数组

end

disp(s)%显示字符数组结果

(c)return语句:

用于终止当前的命令序列,并返回到调用的函数或键盘。

将return插入被调用函数的某一位置,会根据某种条件迫使被调用函数提前结束并返回调用函数。

例:

return语句的用法.

functiond=det(A)%定义函数det(A)计算矩阵A的行列式

ifisempty(A)%如果矩阵是空的

d=1;

return%返回调用函数

else

…%计算过程略

end

四.数据的输入与输出(Dateinputandoutput)

1.数据的输入(Datainput)

常用方法:

(a)键盘输入:

(keyboardinput)数据少时较方便,多时不益使用;

(b)用M文件产生数据:

(GeneratedatabyM-file)使用于较多数据的输入;

(C)从ASCⅡ码文件装载数据:

(LoaddatafromASCⅡcodefile)

(c)对文本格式的数据文件可用load命令直接读入MATLAB,其内容存放在以文件名命名的变量中

(d)利用fopen,fscanf,fread及MATLAB其他低层I/O命令读取数据:

用于读取其他外部应用程序建立的各种特定格式的数据。

2。

数据的输出(dataoutput)

(a)利用diary命令输出语句:

运行diary命令可以在当前工作目录上产生一个名为diary的日记文件,文件内容可以输出。

关闭日记文件的命令为dairyoff.

(b)利用Notebook获取数据:

于dairy用法相仿优点是文字质量高,版面规范,且M-book中的命令可以随时运行或修改,MATLAB工作空间中的数据随之改变。

运行Notebook要求计算机上装有MS-Word。

NOTEBOOKOpenanm-bookinMicrosoftWord(Windowsonly).

NOTEBOOK,byitself,launchesMicrosoftWordandcreatesanewm-bookcalled"Document1."

NOTEBOOK(FILENAME)launchesMicrosoftWordandopensthem-bookFILENAME.

NOTEBOOK('-SETUP')runsaninteractive

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

当前位置:首页 > 高中教育 > 英语

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

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