收藏 分享(赏)

第三章 MATLAB程序设计.doc

上传人:dzzj200808 文档编号:2332473 上传时间:2018-09-10 格式:DOC 页数:18 大小:93.50KB
下载 相关 举报
第三章 MATLAB程序设计.doc_第1页
第1页 / 共18页
第三章 MATLAB程序设计.doc_第2页
第2页 / 共18页
第三章 MATLAB程序设计.doc_第3页
第3页 / 共18页
第三章 MATLAB程序设计.doc_第4页
第4页 / 共18页
第三章 MATLAB程序设计.doc_第5页
第5页 / 共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-Unsi

2、gned Integer 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

3、提供的 save 和 load 命令直接存取。(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 和 w

4、avwrite命令进行读入和存取。Readable file formats. 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.Spreads

5、heet formatsXLS - Excel worksheet 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 - Hier

6、archical Data Format hdfread HDF 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

7、 image imread Truecolor or indexed 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

8、 image imread Truecolor or indexed.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

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

10、、类型。右侧观察前 10 行 10 列信息。Next: 显示数据输入向导窗口第二页。(2)ASC码数据文件:(ASC code data file) 输入 ASC数据文件名-选择显示数据内容 (data)或头文本内容(textdata )-选择 Next 下一页进行导入内容选择(通过钩选决定将何变量导入工作空间)- 按 Finish 完成导入操作或按 Cancel 终止数据的导入。(3)图象数据文件:(Graphics data file) 输入图形数据文件名-点击 show image(可在图象上拖曳放大区域)-按 Finish 完成数据导入(或按 Cancel 终止数据导入) 。(4)声音

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

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

13、w M- File)或打开已有文件键(Open File),也可以在命令窗口输入命令 edit 建立新文件或输入 edit filename, 打开名为 filename 的 M 文件;(2) 编写程序内容:(Compose the program content) 编写新的文件或修改已有文件;(3) 保存文件:(save file) 文件运行前必须完成保存操作,与一般的文件编辑保存操作相同;(4) 运行文件:(running file) 在命令窗口输入文件名即可运行。如要在编辑器中直接完成运行,可在编辑器的 Debug 菜单下save and run 选项,或按 Run 快捷键,最快捷的方法

14、是直接按F5 键执行运行。M 文件有两种形式:命令(脚本) 文件(Script File)和函数文件(Function File)2. 命令文件: (Script File) M 文件中最简单的一种,是可用于自动重复执行的一组 MATLAB 命令和函数组合,不需输出输入参数,用M 文件可以调用工作空间已有的变量或创建新的变量。运行过程中产生的变量都是全局变量。建立一个命令文件等价于从命令窗口中顺序输入文件里的命令,程序不需要预先定义,只要依次将命令编辑在命令文件中,再将程序保存成为扩展名为.m 的 M 文件即可。运行命令文件时,只需在命令窗口键入文件名即可。例:用三角函数计算画出花瓣图形。th

15、eta=-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;for k = 1:4Subplot(2,2,k), polar(theta,rho(k,: )end将程序保存成名为 petals 的 M 文件,并运行。注:(1) %引导注释行,不予执行;(2) 不需要用“end”作为 M 文件的结束标志;(3) 若文件存放在自己的目录上,在运行文件前,应先将自己的目录设置为当前工作目录。最简单方

16、法:在当前目录浏览器中设置。(4) 运行后存放在工作空间的变量可以用工作空间浏览器查看。3。函数文件(Function File)如果 M 文件的第一个可执行行以 function 开始,便是函数文件,每一个函数文件定义一个函数。函数文件区别于命令文件之处在于命令文件的变量在文件执行完成后保留在工作空间中,而函数文件内定义的变量只在函数文件内起作用,文件执行完后即被清除。例:建立 average 函数用于计算矢量中单元的平均值。function y = average(x)%AVERAGE Mean of vector elements.%AVERAGE(X),Where X is a vec

17、tor, is the mean of vector element.%Non-vector input results in an error.m,n=size(x);if(m=1) | (n=1) | (m=1将文件存盘,缺省状态下自动存储名为 average.m 的函数。这样只要接受一个输入参数便可计算返回一个输出参数,与其他MATLAB 函数一样使用。例:用已建立的 average 函数文件求 199 的平均值。z=1:99;average(z)函数文件的基本组成部分:(1)函数定义行:(the lines for function identification) 由function

18、引导,并定义函数名、输入参数和输出参数,函数定义行必须放在文件的第一个可执行上。可以设多个输入输出参数, 如:function x,y,z=sphere(theta,phi,rho)也可以没有输出参数,如:function printresults(x)(1) H1 行:(Lines H1) lookfor 查询时使用的;(2) 帮助文本:(Help text) 建立在线查询信息;(3) 函数体: (Function body) 包含全部的用于完成计算及给输出参数赋值等工作的语句;(4) 注释:(explanatory notes) 以%起始导行尾结束部分的说明文字。可放置在程序中的任何部位。

19、2 局部变量与全局变量 (Local variable and Global variable)用 global 就可以把一个变量定义为全局变量。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

20、:n(初值:步长:終值) 语句体end例: n=10for i=1:nx(i)=(i+1).2;endxx =4 9 16 25 36 49 64 81 100 121例:嵌套循环:注意与 end 的配对。m=3; n=4;for i=1:mfor j=1:na(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:20a(i/2+1)=i ;endaa =0 2 4 6 8 10 12 14 16 18 20(2)

21、While 语句:为条件循环语句。循环不确定次数,只要表达式的结果非零,语句体就重复执行,直到循环条件不成立为止。While 表达式语句体end例:while 循环,求解 n!达到 100 位数的第一个 n 是多少。n=1;while prod(1:n)=0.90) elsefail=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:nif y(i)=-1 %当 input_num=-1 时显示cas

22、e 0disp(zero); %当 input_num= 0 时显示case 1disp(positive one); %当 input_num= 1 时显示otherwisedisp(other value); %当 input_num 等于其他值时显示end(4) 检测语句:(Detect statement)try-catch 语句用于检测错误并改变流程,形式:try语句体 1catch语句体 2 end先执行 try 下面的语句体 1,如没有错误,就跳出该结构,如出错误,则执行 catch 语句下面的语句体 2。可用 lasterr 函数查询错误信息,查询结果为空字符串时表示语句体 1

23、 成功执行。例: 判断错误语句的用法n=4; a=magic(3)trya_n=a(n,:), %取 a 的第 n 行元素catcha_n=a(end, : ), %如取 a 的第 n 行出错,则改取 a 的最后一行endlasterr %显示出错原因a =8 1 63 5 74 9 2a_n =4 9 2ans =Index exceeds matrix dimensions.(5)其他流程控制语句:(Other control flow statement)(a), continue 语句:用于控制 for 循环和 while 循环跳过某些执行语句。例: continue 语句的用法.fi

24、d=fopen(magic.m,r); %打开文件count=0; %计数器置零while feof(fid) %判断是否到文件末尾line=fgetl (fid);if isempty(line) | strncmp(line,%,1)%判断是否为空行或注释行continue %如果是空行或注释行继续下一次循环endcount=count+1; %如果不是空行或注释行计数器加 1enddisp(sprintf(%d lines ,count); %显示行数25 lines(b). break 语句:用于终止 for 循环和 while 循环的执行.例:break 语句的用法.fid=fope

25、n(fft.m,r); %打开文件s= ; %清空字符数组while feof(fid) %判断是否为文件末尾line=fgetl(fid); %从文件中读行if isempty(line) %如果是空行break %如果是空行退出循环ends=strvcat(s,line); %如果不是空行,丛向连接字符数组enddisp(s) %显示字符数组结果(c )return 语句: 用于终止当前的命令序列,并返回到调用的函数或键盘。例:return 语句的用法.function d=det(A) %定义函数 det(A) 计算矩阵 A 的行列式if isempty(A) %如果矩阵是空的d=1;r

26、eturn %返回调用函数else %计算过程略end四. 数据的输入与输出 (Date input and output)1数据的输入(Data input)常用方法:(a) 键盘输入:(keyboard input) 数据少时较方便,多时不益使用;(b) 用 M 文件产生数据: (Generate data by M-file) 使用于较多数据的输入;(C) 从 ASC码文件装载数据:(Load data from ASC code file)(c) 对文本格式的数据文件可用 load 命令直接读入MATLAB,其内容存放在以文件名命名的变量中(d) 利用 fopen, fscanf, f

27、read 及 MATLAB 其他低层 I/O 命令读取数据: 用于读取其他外部应用程序建立的各种特定格式的数据。2。数据的输出(data output)(a) 利用 diary 命令输出语句: 运行 diary 命令可以在当前工作目录上产生一个名为 diary 的日记文件,文件内容可以输出。关闭日记文件的命令为 dairy off.(b) 利用 Notebook 获取数据:于 dairy 用法相仿优点是文字质量高,版面规范,且 M-book 中的命令可以随时运行或修改,MATLAB 工作空间中的数据随之改变。运行 Notebook 要求计算机上装有 MS-Word。NOTEBOOK Open

28、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 FILENAME.NOTEBOOK(-SETUP) runs an interactive setup function for the Notebook. The user is prompted fo

29、r 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 Microsoft Word (one of 97 or 2000 or 2002), WORDLOC is the directory containing winword.exe, and TEMPLAT

30、ELOC is a Microsoft Word template directory.Examples:notebooknotebook c:documentsmymbook.docnotebook -setup For the case in which Microsoft Word 97 (winword.exe) resides in theC:Program FilesMicrosoft Office 97Office directory, and the Microsoft Word templates reside in the C:Program FilesMicrosoft

31、Office 97Templates directory: wordver = 97; wordloc = C:Program FilesMicrosoft Office 97Office; templateloc = C:Program FilesMicrosoft Office 97Templates; notebook(-setup, wordver, wordloc, templateloc)(c) save 命令输出数据:将当前内存中的变量存到文件中去。(d) 利用 fopen, fprintf, fwrite 及其他底层 I/O 命令输出特殊格式的数据:如需要在其他外部应用程序中使

32、用 MATLAB 输出的特定格式的数据,使用此方法。3. Save 和 load 命令的使用(Using commend Load and Save)(1) save(将工作空间的变量存入磁盘)命令的常用调用方法save: 将工作空间所有的变量以二进制格式存入名为 matlab.mat 的缺省文件; (a) save dfile: 将工作空间所有的变量以二进制格式存入 dfile.mat 文件,扩展名自动产生(b) save dfile x: 只把变量 x 以二进制格式存入 dfile.mat 文件,扩展名自动产生(c) save dfile.dat x-ascii: 将变量 x 以 8 位

33、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) load: 把磁盘 matlab.mat 的内容读入内存;(b) load dfile: 将磁盘文件 dfile.mat 内容读入内存;

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

35、 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, which is evaluated, using the variables in the current worksp

36、ace, 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 input is not evaluated; the characters are simply returned

37、 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(选择转换方式(1-摄氏转换为华氏,2-华氏转换为摄氏):);if k=1 if k=1tout=tin*9/5+32; % 摄氏

38、转换为华氏k1=2;elseif k=2tout=(tin-32)*5/9; % 华氏转换为摄氏k1=1;endstr= C; F;disp(转换前的温度, , 转换后的温度 )disp( ,num2str(tin),str(k,:), , num2str(tout),str(k1,:)不同的样条插值函数应用方法:yi=interp1(x,y,xi,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)

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

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报