首页 matlab基础教程第三章 MATLAB程序设计基础

matlab基础教程第三章 MATLAB程序设计基础

举报
开通vip

matlab基础教程第三章 MATLAB程序设计基础 第三章 MATLAB程序设计基础 chapter 3: Foundation of MATLAB program design 1、 数据及数据文件(Data and Data file) 1. 数据类型:(Data mode) 为适应各种不同计算和处理的需求,MATLAB提供了多种数据类型,主要有: 数值数组(Numeric array)— 包括整形(int8,uint8,int16,uint16,int32,uint32)单精度(signal), 双精度(duble)(MATLAB最常用的变量类型),稀...

matlab基础教程第三章 MATLAB程序设计基础
第三章 MATLAB程序设计基础 chapter 3: Foundation of MATLAB program design 1、 数据及数据文件(Data and Data file) 1. 数据类型:(Data mode) 为适应各种不同计算和处理的需求,MATLAB提供了多种数据类型,主要有: 数值数组(Numeric array)— 包括整形(int8,uint8,int16,uint16,int32,uint32)单精度(signal), 双精度(duble)(MATLAB最常用的变量类型),稀疏(sparce)数组。按维数分有一维、二维和多维数组。 Int--- Integrate. Uint---Unsigned Integer data 字符数组(Character array):由字符串组成的数组 单元数组(Cell array):用不同类型和大小的数组组成的数组,同一个元胞数组中各元胞的内容可以不同。 结构数组(Structure array):与单元数组类似,但其数据的组织能力更强,更富于变化。 Java类(Java class):由JavaAPI或第三方定义的类函数。 函数句柄(Function handle):可以在一个参数列表中传递,并使用feval运行. 在工作空间浏览器中不同的数据类型有着不同的图标标识。 2. 数据文件(Data file) MATLAB支持的各种数据文件(Readable file formats of MATLAB)的主要类型及其存取方法如下述: (1)二进制数据文件:(Binary date file) 以.mat为扩展名。是标准的MATLAB数据文件,以二进制编码形式存储。.mat文件可以由MATLAB提供的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 和 wavwrite命令进行读入和存取。 Readable file formats. Data formats Command Returns MAT- 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 formats XLS - Excel worksheet xlsread Double array and cell array. WK1- Lotus 123 worksheet wk1read Double array and cell array. Scientific data formats CDF - Common Data Format cdfread Cell array of CDF records FITS- Flexible Image Transport System fitsread Primary or extension table data HDF - Hierarchical Data Format hdfread HDF or HDF-EOS data set Movie formats AVI - Movie aviread MATLAB movie. Image formats TIFF - 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 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 image imread Truecolor or indexed. PBM - PBM image imread Grayscale image. PGM - PGM image imread Grayscale image. PPM - PPM image imread Truecolor image. Audio formats AU - 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 rate. 3. 数据输入向导(Import wizard) File 菜单下的工具Import Wizard用于将各种类型数据文件中的数据导入工作空间,称为数据输入向导。在 Import 对话框中输入需要导入的数据文件名后出现Import Wizard窗口,可预观测将要导入的数据、显示图象、播放声音等。 几种数据的导入: (1) mat数据文件( mat data file) 调入途径: File 输入文件名,也可用Browse打开文件浏览器选择输入文件;Clipboard,数据从剪贴板中调入。 窗口内容:左侧,变量名称、大小、类型。右侧观察前10行10列信息。 Next: 显示数据输入向导窗口第二页。 (2)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弹出一个显示声音数据波形的图形窗口(按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文件编程:(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文件; (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文件中最简单的一种,是可用于自动重复执行的一组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; for k = 1:4 Subplot(2,2,k), polar(theta,rho(k,: )) end 将程序保存成名为petals的M文件,并运行。 注: (1) ‘%‘引导注释行,不予执行; (2) 不需要用“end”作为M文件的结束标志; (3) 若文件存放在自己的目录上,在运行文件前,应先将自己的目录设置为当前工作目录。最简单方法:在当前目录浏览器中设置。 (4) 运行后存放在工作空间的变量可以用工作空间浏览器查看。 3。函数文件(Function File) 如果M文件的第一个可执行行以function开始,便是函数文件,每一个函数文件定义一个函数。函数文件区别于命令文件之处在于命令文件的变量在文件执行完成后保留在工作空间中,而函数文件内定义的变量只在函数文件内起作用,文件执行完后即被清除。 例:建立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)) error(' Input must be a vector') end y=sum(x)/length(x); 将文件存盘,缺省状态下自动存储名为average.m的函数。这样只要接受一个输入参数便可计算返回一个输出参数,与其他MATLAB函数一样使用。 例:用已建立的average函数文件求1~99的平均值。 z=1:99; average(z) 函数文件的基本组成部分: (1)函数定义行:(the lines for function identification) 由function 引导,并定义函数名、输入参数和输出参数,函数定义行必须放在文件的第一个可执行上。可以设多个输入输出参数, 如: 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) 以%起始导行尾结束部分的说明文字。可放置在程序中的任何部位。 2. 局部变量与全局变量 (Local variable and Global variable) 由M文件定义的一个matlab函数内部所拥有的变量为局部变量,这些变量独立于其他函数的局部变量和工作空间中的变量。可以用来共享的变量为全局变量。 用global就可以把一个变量定义为全局变量。MATLAB中变量名是区分大小写的,习惯上常将大写字母定为全局变量。如: global A B C 三. 程序结构(Structure of program) 8种控制程序 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 (control flow statement) 的语句:for, while, if, switch, try, continue, break, return 1。循环语句(Loop statement) (1) for语句: for v=表达式 通常为一个矢量, 形式为:m:s:n(初值:步长:終值) 语句体 end 例: n=10 for i=1:n x(i)=(i+1).^2; end x x = 4 9 16 25 36 49 64 81 100 121 例:嵌套循环:注意与end的配对。 m=3; n=4; for i=1:m for j=1:n a(i,j)=1/(i+j-1); end end format rat a = 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 ; end a a = 0 2 4 6 8 10 12 14 16 18 20 (2).While语句:为条件循环语句。循环不确定次数,只要表达式的逻辑判断结果非零,语句体就重复执行,直到循环条件不成立为止。 While 表达式 语句体 end 例:while循环,求解n!达到100位数的第一个n是多少。 n=1; while prod(1:n)<1e100 n=n+1; end n n = 70 2. 条件语句(Selection statement) (1) if—end语句(simple if statement) 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); hold on for i=1:n if y(i)<-1 plot(x(i),y(i),'*g') elseif y(i)>=-1 & y(i)<=1 plot(x(i),y(i),'ob') elseif y(i)>=1 plot(x(i),y(i),'xr') end end hold off (3) 分支语句:switch—case—end 通过对某个变量值的比较做各种不同的执行选择。 形式: switch 表达式(数字或字符串) case 数字或字符串1 语句体 1; case 数字或字符串2 语句体 2; …… otherwise 语句体 n; End 将表达式的值与各case后的值进行比较,与哪一个case的值相同就执行哪一个case下面的语句体,如所有的case值均与之不同,则执行otherwise下面的语句体。 例:检查input_num的数值. switch input_num case -1 disp(‘negative one’); %当input_num=-1时显示 case 0 disp(‘zero’); %当input_num= 0时显示 case 1 disp(‘positive one’); %当input_num= 1时显示 otherwise disp(‘other value’); %当input_num等于其他值时显示 end (4) 检测语句:(Detect statement) 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 = 8 1 6 3 5 7 4 9 2 a_n = 4 9 2 ans = Index exceeds matrix dimensions. (5)其他流程控制语句:(Other control flow statement) (a), continue语句:用于控制for循环和while循环跳过某些执行语句。在for循环和while循环中,如果出现continue语句,则跳过循环体中所有剩余的语句,继续下一次循环。 例: continue语句的用法.确定剔除空行和注释行后文件的有效行数 fid=fopen('magic.m','r'); %打开文件 count=0; %计数器置零 while ~feof(fid) %判断是否到文件末尾 line=fgetl (fid); %从文件中读行 if isempty(line) | strncmp(line,'%',1) %判断是否为空行或注释行 continue %如果是空行或注释行继续下一次循环 end count=count+1; %如果不是空行或注释行计数器加1 end disp(sprintf('%d lines' ,count)); %显示剔除后的行数 25 lines (b). break语句:用于终止for循环和while循环的执行.如果遇到break语句,则退出循环体,执行循环体外的下一行语句。 例:break语句的用法. fid=fopen(‘fft.m’,’r’); %打开文件 s=’ ‘; %清空字符数组 while ~feof(fid) %判断是否为文件末尾 line=fgetl(fid); %从文件中读行 if isempty(line) %如果是空行 break %如果是空行退出循环 end s=strvcat(s,line); %如果不是空行,将该行写入字符数组 end disp(s) %显示字符数组结果 (c )return语句: 用于终止当前的命令序列,并返回到调用的函数或键盘。将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) 使用于较多数据的输入; (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获取数据:于dairy 用法相仿优点是文字质量高,版面 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 ,且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 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 Microsoft 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:\documents\mymbook.doc notebook -setup For the case in which Microsoft Word 97 (winword.exe) resides in the C:\Program Files\Microsoft Office 97\Office directory, and the Microsoft Word templates reside in the C:\Program Files\Microsoft Office 97\Templates directory: wordver = '97'; wordloc = 'C:\Program Files\Microsoft Office 97\Office'; templateloc = 'C:\Program Files\Microsoft Office 97\Templates'; notebook('-setup', wordver, wordloc, templateloc) (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文件,扩展名自动产生 (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) 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'): 执行后出现提示字符串,输入的内容可以是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, which 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 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('选择转换方式(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; end str=[' (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')
本文档为【matlab基础教程第三章 MATLAB程序设计基础】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_969320
暂无简介~
格式:doc
大小:93KB
软件:Word
页数:0
分类:
上传时间:2018-09-09
浏览量:14