第三章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.DataformatsCommandReturnsMAT-MATLABworkspaceloadVariablesinfile.CSV-CommaseparatednumberscsvreadDoublearray.DAT-FormattedtextimportdataDoublearray.DLM-DelimitedtextdlmreadDoublearray.TAB-TabseparatedtextdlmreadDoublearray.SpreadsheetformatsXLS-ExcelworksheetxlsreadDoublearrayandcellarray.WK1-Lotus123worksheetwk1readDoublearrayandcellarray.ScientificdataformatsCDF-CommonDataFormatcdfreadCellarrayofCDFrecordsFITS-FlexibleImageTransportSystemfitsreadPrimaryorextensiontabledataHDF-HierarchicalDataFormathdfreadHDForHDF-EOSdatasetMovieformatsAVI-MovieavireadMATLABmovie.ImageformatsTIFF-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.AudioformatsAU-NeXT/SunsoundaureadSounddataandsamplerate.SND-NeXT/SunsoundaureadSounddataandsamplerate.WAV-MicrosoftWavesoundwavreadSounddataandsamplerate.3.数据输入向导(Importwizard)File菜单下的工具ImportWizard用于将各种类型数据文件中的数据导入工作空间,称为数据输入向导。在Import对话框中输入需要导入的数据文件名后出现ImportWizard窗口,可预观测将要导入的数据、显示图象、播放声音等。几种数据的导入:(1)mat数据文件(matdatafile)调入途径:File-Importdata-选择文件名--打开--ImportWizard–-勾选需要调入的变量--finish.也可用Browse打开文件浏览器选择输入文件;Clipboard,数据从剪贴板中调入。窗口内容:左侧,变量名称、大小、类型。右侧观察前10行10列信息。Next:显示数据输入向导窗口第二页。(2)ASCⅡ码数据文件:(ASCⅡcodedatafile)File-Importdata-选择文件名或输入ASCⅡ数据文件名--打开--ImportWizard--选择显示数据内容(data)或头文本内容(textdata)--选择Next下一页进行导入内容选择(通过钩选决定将何变量导入工作空间)----按Finish完成导入操作或按Cancel终止数据的导入。(3)图象数据文件:(Graphicsdatafile)File-Importdata-选择文件名或输入图形数据文件名--打开--ImportWizard--点击showimage(可在图象上拖曳放大区域)------按Finish完成数据导入(或按Cancel终止数据导入)。(4)声音数据文件:(Sounddatafile)File-Importdata-选择文件名或输入声音数据文件名--打开--ImportWizard--点击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;%计算四种不同rhorho(2,:)=cos(10*theta).^3;rho(3,:)=sin(theta).^2;rho(4,:)=5*cos(3.5*theta).^3;fork=1:4Subplot(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')endy=sum(x)/length(x);将文件存盘,缺省状态下自动存储名为average.m的函数。这样只要接受一个输入参数便可计算返回一个输出参数,与其他MATLAB函数一样使用。例:用已建立的average函数文件求1~99的平均值。z=1:99;average(z)函数文件的基本组成部分:(1)函数定义行:(thelinesforfunctionidentification)由fun