收藏 分销(赏)

matlab讲义之程序设计基础.docx

上传人:二*** 文档编号:4769817 上传时间:2024-10-12 格式:DOCX 页数:18 大小:41.22KB
下载 相关 举报
matlab讲义之程序设计基础.docx_第1页
第1页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、第三章 MATLAB程序设计基础chapter 3: Foundation of MATLAB program design一、 数据及数据文件(Data and Data file)1. 数据类型:(Data mode) 用于编程和计算的数据类型(表 31)数组:字符数组(Character array)、数值数组(Numeric array)包括整形(int8,uint8,int16,uint16,int32,uint32)单精度(signal), 双精度(duble)(MATLAB最常用的变量类型),稀疏(sparce)数组。、Int- Integrate.Uint-Unsigned I

2、NTeger data单元数组(Cell array)、结构数组(Structure array)Java类(Java class)函数句柄(Function handle)在工作空间浏览器中不同的数据类型有着不同的图标标识,(见图 32)_2. 数据文件(Data file)MATLAB支持的各种数据文件(Readable file formats of MATLAB)及其调用方法和返回值见(表 32) (1)二进制数据文件:(Binary date file) 以.mat为扩展名。是标准的MATLAB数据文件,以二进制编码形式存储。.mat文件可以由MATLAB提供的save和load命令

3、直接存取。(2)ASC码数据文件:(ASC code data file)扩展名为.txt, .dat等, 可以是在MATLAB环境下存储的,也可能是其他软件的计算结果,可以被MATLAB调用,也可以用文本编辑器打开进行观察与修改。 可以用save和load命令进行读入和存取。(3).图象文件:(Graphics file) 扩展名为.bmp, .jpg .tif等,用于图形图象处理,可以用imread和imwrite命令进行读入和存取。(4).声音文件: (Sound file) 扩展名为.wav ,用waveread 和 wavwrite命令进行读入和存取。Readable file fo

4、rmats. Data formats Command ReturnsMAT- MATLAB workspace load Variables in file.CSV- Comma separated numbers csvread Double array.DAT- Formatted text importdata Double array.DLM- Delimited text dlmread Double array.TAB- Tab separated text dlmread Double array.Spreadsheet formatsXLS - Excel worksheet

5、 xlsread Double array and cell array.WK1- Lotus 123 worksheet wk1read Double array and cell array.Scientific data formatsCDF - Common Data Format cdfread Cell array of CDF recordsFITS- Flexible Image Transport System fitsread Primary or extension table dataHDF - Hierarchical Data Format hdfread HDF

6、or HDF-EOS data setMovie formatsAVI - Movie aviread MATLAB movie.Image formatsTIFF - TIFF image imread Truecolor, grayscale or indexed image(s).PNG - PNG image imread Truecolor, grayscale or indexed image.HDF - HDF image imread Truecolor or indexed image(s).BMP - BMP image imread Truecolor or indexe

7、d image.JPEG - JPEG image imread Truecolor or grayscale image.GIF - GIF image imread Indexed image.PCX - PCX image imread Indexed image.XWD - XWD image imread Indexed image.CUR - Cursor image imread Indexed image.ICO - Icon image imread Indexed image.RAS - Sun raster image imread Truecolor or indexe

8、d.PBM - PBM image imread Grayscale image.PGM - PGM image imread Grayscale image.PPM - PPM image imread Truecolor image. Audio formatsAU - NeXT/Sun sound auread Sound data and sample rate.SND - NeXT/Sun sound auread Sound data and sample rate.WAV - Microsoft Wave sound wavread Sound data and sample r

9、ate.3. 数据输入向导(Import wizard)File 菜单下的工具Import Wizard用于将各种类型数据文件中的数据导入工作空间,称为数据输入向导。在 Import 对话框中输入需要导入的数据文件名后出现Import Wizard窗口,可预观测将要导入的数据、显示图象、播放声音等。几种数据的导入:(1) mat数据文件( mat data file)调入途径: File 输入文件名,也可用Browse打开文件浏览器选择输入文件;Clipboard,数据从剪贴板中调入。窗口内容:左侧,变量名称、大小、类型。右侧观察前10行10列信息。Next: 显示数据输入向导窗口第二页。(2

10、)ASC码数据文件:(ASC code data file) 输入ASC数据文件名-选择显示数据内容 (data)或头文本内容(textdata)-选择Next下一页进行导入内容选择(通过钩选决定将何变量导入工作空间)- 按Finish 完成导入操作或按Cancel终止数据的导入。(3)图象数据文件:(Graphics data file) 输入图形数据文件名-点击show image(可在图象上拖曳放大区域)-按Finish 完成数据导入(或按Cancel终止数据导入)。(4)声音数据文件:(Sound data file) 输入声音数据文件名-点击Play Sound弹出一个显示声音数据波

11、形的图形窗口(按Play agine按钮重新播放声音,按Done按钮关闭预观察窗口)-按Finish 完成数据导入(或按Cancel终止数据导入)。(5)剪贴板的数据:(Clipboard data) 需要导入已存放在系统剪贴板中的数据,点数据输入向导窗口中的Clipboard选项,-Next进入下一页-按Finish 完成数据导入(或按Cancel终止数据导入)。二 M文件(M-file)MATLAB 的两种工作方式:1,交互式命令操作方式(interactive mode)通过命令窗口进行交互式操作;2,M文件(M-file) 的编程工作方式(programming mode)。1 M文件

12、编程:(M-file program)可用普通文本编辑器编制 MATLAB文件,文件由纯ASC字符组成,确定文件名后加.m扩展名,称为M文件。 MATLAB提供了一个方便的编辑/调试器,功能较多,推荐使用。建立M文件的一般步骤:(normal process of M- file creating)(1) 打开文件编辑器:(Opening the file editor) 最简单的方法是在操作桌面的工具栏上选择新建文件键(New M- File)或打开已有文件键(Open File),也可以在命令窗口输入命令edit建立新文件或输入edit filename, 打开名为filename 的M文

13、件;(2) 编写程序内容:(Compose the program content) 编写新的文件或修改已有文件;(3) 保存文件:(save file) 文件运行前必须完成保存操作,与一般的文件编辑保存操作相同;(4) 运行文件:(running file) 在命令窗口输入文件名即可运行。如要在编辑器中直接完成运行,可在编辑器的Debug菜单下save and run选项,或按Run快捷键,最快捷的方法是直接按F5键执行运行。M文件有两种形式:命令文件(Script File)和函数文件(Function File)2. 命令文件: (Script File) M文件中最简单的一种,是可用于

14、自动重复执行的一组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(

15、4,: )=5*cos(3.5*theta).3;for k = 1:4Subplot(2,2,k), polar(theta,rho(k,: )end将程序保存成名为petals的M文件,并运行。注:(1) %引导注释行,不予执行;(2) 不需要用“end”最为M文件的结束标志;(3) 若文件存放在自己的目录上,在运行文件前,应先将自己的目录设置为当前工作目录。最简单方法:在当前目录浏览器中设置。(4) 运行后存放在工作空间的变量可以用工作空间浏览器查看。3。函数文件(Function File)如果M文件的第一个可执行行以function开始,便是函数文件,每一个函数文件定义一个函数。函数

16、文件区别于命令文件之处在于命令文件的变量在文件执行完成后保留在工作空间中,而函数文件内定义的变量只在函数文件内起作用,文件执行完后即被清除。例:建立average函数用于计算矢量中单元的平均值。 function y = average(x) %AVERAGE Mean of vector elements.%AVERAGE(X),Where X is a vector, is the mean of vector element.%Non-vector input results in an error.m,n=size(x); if(m=1) | (n=1) | (m=1& n=1) er

17、ror( Input must be a vector)end y=sum(x)/length(x);将文件存盘,缺省状态下自动存储名为average.m的函数。这样只要接受一个输入参数便可计算返回一个输出参数,与其他MATLAB函数一样使用。例:用已建立的average函数文件求199的平均值。 z=1:99;average(z)函数文件的基本组成部分:(1)函数定义行:(the lines for function identification) 由function 引导,并定义函数名、输入参数和输出参数,函数定义行必须放在文件的第一个可执行上。可以设多个输入输出参数, 如: functi

18、onx,y,z=sphere(theta,phi,rho)也可以没有输出参数,如: function printresults(x)(1) H1行:(Lines H1) lookfor查询时使用的;(2) 帮助文本:(Help text) 建立在线查询信息;(3) 函数体: (Function body) 包含全部的用于完成计算及给输出参数赋值等工作的语句;(4) 注释:(explanatory notes) 以%起始导行尾结束部分的说明文字。可放置在程序中的任何部位。2 局部变量与全局变量 (Local variable and Global variable) 用global就可以把一个变

19、量定义为全局变量。MATLAB中变量名是区分大小写的,习惯上常将大写字母定为全局变量。如:global A B C三 程序结构(Structure of program)8种控制程序流程(control flow statement) 的语句:for, while, if, switch, try, continue, break, return1。循环语句(Loop statement)(1) for语句:for v=表达式 通常为一个矢量 形式为: m:s:n语句体end例:n=10for i=1:nx(i)=(i+1).2;end xx = 4 9 16 25 36 49 64 81 1

20、00 121例:嵌套循环:注意与end的配对。 m=3; n=4;for i=1:m for j=1:n a(i,j)=1/(i+j-1); endendformat rataa = 1 1/2 1/3 1/4 1/2 1/3 1/4 1/5 1/3 1/4 1/5 1/6 例: 运用非1步长,产生0-20 以内的偶数 for i=0:2:20 a(i/2+1)=i ;endaa =0 2 4 6 8 10 12 14 16 18 20(2)While语句:为条件循环语句。循环不确定次数,只要表达式的结果非零,语句体就重复执行,直到循环条件不成立为止。 While 表达式语句体end例:whi

21、le循环,求解n!达到100位数的第一个n是多少。 n=1;while prod(1:n)=0.90) & (grade=60) pass=1;else fail=1;end(1) ifelseifend语句if 表达式 1语句体1;elseif 表达式2语句体2;else语句体3;end例: 用色彩区分数据点的范围。n=100;x=1:n;y=randn(1,n);hold onfor i=1:n if y(i)=-1 & y(i)=1plot(x(i),y(i),xr)endendhold off (3) 分支语句:switchcaseend通过对某个变量值的比较做各种不同的执行选择。形式

22、:switch 表达式(数字或字符串)case 数字或字符串1语句体 1;case 数字或字符串2语句体 2;otherwise语句体 n;end例:检查input_num的数值.switch input_numcase -1disp(negative one); %当input_num=-1时显示case 0disp(zero); %当input_num= 0时显示case 1disp(positive one); %当input_num= 1时显示otherwisedisp(other value); %当input_num等于其他值时显示end(4) 检测语句:(Detect state

23、ment)try-catch语句用于检测错误并改变流程,形式:try语句体 1catch语句体2 end先执行try下面的语句体1,如没有错误,就跳出该结构,如出错误,则执行catch语句下面的语句体2。可用lasterr函数查询错误信息,查询结果为空字符串时表示语句体1成功执行。例: 判断错误语句的用法 n=4; a=magic(3)trya_n=a(n,:), %取a的第n 行元素catcha_n=a(end, : ), %如取a的第n 行出错,则改取a的最后一行endlasterr %显示出错原因a = 8 1 6 3 5 7 4 9 2a_n = 4 9 2ans = Index ex

24、ceeds matrix dimensions.(5)其他流程控制语句:(Other control flow statement)(a), continue语句:用于控制for循环和while循环跳过某些执行语句。例: continue语句的用法.fid=fopen(magic.m,r); %打开文件count=0; %计数器置零while feof(fid) %判断是否到文件末尾 line=fgetl (fid); if isempty(line) | strncmp(line,%,1) %判断是否为空行或注释行 continue %如果是空行或注释行继续下一次循环 endcount=co

25、unt+1; %如果不是空行或注释行计数器加1end disp(sprintf(%d lines ,count); %显示行数25 lines(b). break语句:用于终止for循环和while循环的执行.例:break语句的用法.fid=fopen(fft.m,r); %打开文件s= ; %清空字符数组 while feof(fid) %判断是否为文件末尾 line=fgetl(fid); %从文件中读行 if isempty(line) %如果是空行 break %如果是空行退出循环 ends=strvcat(s,line); %如果不是空行,丛向连接字符数组end disp(s) %

26、显示字符数组结果(c )return语句: 用于终止当前的命令序列,并返回到调用的函数或键盘。例:return语句的用法.function d=det(A) %定义函数det(A) 计算矩阵A的行列式 if isempty(A) %如果矩阵是空的 d=1; return %返回调用函数else %计算过程略end四. 数据的输入与输出 (Date input and output)1数据的输入(Data input)常用方法:(a) 键盘输入:(keyboard input) 数据少时较方便,多时不益使用;(b) 用M文件产生数据:(Generate data by M-file) 使用于较多

27、数据的输入;(C) 从ASC码文件装载数据:(Load data from ASC code file)(c) 对文本格式的数据文件可用load命令直接读入MATLAB,其内容存放在以文件名命名的变量中(d) 利用fopen, fscanf, fread及 MATLAB其他低层 I/O命令读取数据: 用于读取其他外部应用程序建立的各种特定格式的数据。2。数据的输出(data output)(a) 利用diary命令输出语句: 运行diary命令可以在当前工作目录上产生一个名为diary的日记文件,文件内容可以输出。关闭日记文件的命令为dairy off.(b) 利用Notebook获取数据:于

28、dairy 用法相仿优点是文字质量高,版面规范,且M-book中的命令可以随时运行或修改,MATLAB工作空间中的数据随之改变。运行Notebook要求计算机上装有MS-Word。NOTEBOOK Open an m-book in Microsoft Word (Windows only). NOTEBOOK, by itself, launches Microsoft Word and creates a new m-book called Document 1.NOTEBOOK(FILENAME) launches Microsoft Word and opens the m-book

29、FILENAME.NOTEBOOK(-SETUP) runs an interactive setup function for the Notebook. The user is prompted for the version of Microsoft Word and the locations of several files. NOTEBOOK(-SETUP, WORDVER, WORDLOC, TEMPLATELOC) sets up the Notebook using the specified information. WORDVER is the version of Mi

30、crosoft Word (one of 97 or 2000 or 2002), WORDLOC is the directory containing winword.exe, and TEMPLATELOC is a Microsoft Word template directory. Examples: notebook notebook c:documentsmymbook.doc notebook -setup For the case in which Microsoft Word 97 (winword.exe) resides in theC:Program FilesMic

31、rosoft Office 97Office directory, and the Microsoft Word templates reside in the C:Program FilesMicrosoft Office 97Templates directory: wordver = 97; wordloc = C:Program FilesMicrosoft Office 97Office; templateloc = C:Program FilesMicrosoft Office 97Templates; notebook(-setup, wordver, wordloc, temp

32、lateloc)(c) save命令输出数据:将当前内存中的变量存到文件中去。(d) 利用fopen, fprintf, fwrite及其他底层I/O命令输出特殊格式的数据:如需要在其他外部应用程序中使用MATLAB输出的特定格式的数据,使用此方法。3. Save 和load命令的使用(Using commend Load and Save)(1) save(将工作空间的变量存入磁盘)命令的常用调用方法save: 将工作空间所有的变量以二进制格式存入名为matlab.mat的缺省文件; (a) save dfile: 将工作空间所有的变量以二进制格式存入dfile.mat文件,扩展名自动产生(

33、b) save dfile x: 只把变量x以二进制格式存入dfile.mat文件,扩展名自动产生(c) save dfile.dat x-ascii: 将变量x以8位ASC码形式存入dfile.mat文件;(d) save dfile.dat x-ascii-double: 将变量x以16位ASC码形式存入dfile.mat文件;(e) save(fname, a, -ascii): fname 是一个预先定义好的包含文件名的字符串,该用法将变量a以ASC码格式存入fname定义的文件中。(2) load命令的常用方法(usual application of command load)(a

34、) load: 把磁盘matlab.mat的内容读入内存;(b) load dfile: 将磁盘文件 dfile.mat内容读入内存;(c) load dfile.dat: 将磁盘文件 dfile.mat内容读入内存,这是一个ASC码文件,系统自动将文件名定义为变量名;(c) a=load(fname): fname是预先定义好的包含文件名的字符串,将由fname定义文件名的数据文件调入a中。附:1、命令窗口数据直接输入输出语句(Input)可利用语句中输入的字符串内容提示用户在命令窗口直接输入程序运行所需的某些参数,调用格式:R = INPUT(How many apples): 执行后出现

35、提示字符串,输入的内容可以是MATLAB可估值的任何表达式.输出保存在变量R中。R = INPUT(What is your name,s): 执行后出现提示字符串,等待字符串输入,字符串直接输出为MATLAB字符串形式。INPUT Prompt for user input. R = INPUT(How many apples) gives the user the prompt in the text string and then waits for input from the keyboard. The input can be any MATLAB expression, whic

36、h is evaluated, using the variables in the current workspace, and the result returned in R. If the user presses the return key without entering anything, INPUT returns an empty matrix. R = INPUT(What is your name,s) gives the prompt in the text string and waits for character string input. The typed

37、input is not evaluated; the characters are simply returned as a MATLAB string. The text string for the prompt may contain one or more n. The n means skip to the beginning of the next line. This allows the prompt string to span several lines. To output just a use .例:编制可由命令窗口输入被处理温度数据的程序。k=input(选择转换方

38、式(1-摄氏转换为华氏,2-华氏转换为摄氏):); if k=1 & k=2 disp(请指定转换方式) return end tin=input(输入待转变的温度(允许输入数组):); if k=1 tout=tin*9/5+32; % 摄氏转换为华氏 k1=2; elseif k=2 tout=(tin-32)*5/9; % 华氏转换为摄氏 k1=1; endstr= C; F;disp(转换前的温度, , 转换后的温度)disp( ,num2str(tin),str(k,:), , num2str(tout),str(k1,:)不同的样条插值函数应用方法:yi=interp1(x,y,x

39、i,method)yi=method(x,y,xi)例: 有一正弦衰减数据y=sin(x).*exp(-x/10),其中x=0:pi/5:4*pi,用三次样条法进行插值。未插值: x0=0:pi/5:4*pi; y0=sin(x0).*exp(-x0/10);plot(x0,y0)方法1:x0=0:pi/5:4*pi; y0=sin(x0).*exp(-x0/10); x=0:pi/20:4*pi; y=spline(x0,y0,x); plot(x0,y0,or,x,y,b)方法2:x0=0:pi/5:4*pi; y0=sin(x0).*exp(-x0/10);x=0:pi/20:4*pi;y=interp1(x0,y0,x,splin)plot(x0,y0,or,x,y,b)

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服