Presentation is loading. Please wait.

Presentation is loading. Please wait.

第七节 matlab的程序设计 —— matlab语言称为第四代编程语言,程序简洁、可读性很强而且调试十分容易。

Similar presentations


Presentation on theme: "第七节 matlab的程序设计 —— matlab语言称为第四代编程语言,程序简洁、可读性很强而且调试十分容易。"— Presentation transcript:

1 第七节 matlab的程序设计 —— matlab语言称为第四代编程语言,程序简洁、可读性很强而且调试十分容易。

2 m文件简介 用户如想灵活应用matlab去解决实际问题,充分调用matlab的科学技术资源,就需要编辑m文件
包含matlab语言代码的文件称为m文件,其扩展名为m。 编辑m文件可使用各种文本编辑器。

3 一、matlab的工作模式 指令驱动模式  通常matlab以指令驱动模式工作,即在matlab 窗口下当用户输入单行指令时,matlab 立即处理这条指令,并显示结果,这就是matlab命令行方式。  命令行操作时,matlab窗口只允许一次执行一行上的一个或几个语句。

4 例如: x1=0:10 x1 = x2=0:3:11 x2 = x3=11.5:-3:0 x3 =

5 x1=0:10,x2=0:3:11,x3=11.5:-3:0 x1 = x2 = x3 = 在matlab窗口输入数据和命令进行计算时,当处理复杂问题和大量数据时是不方便的。因此应编辑m文件。

6 m文件模式 命令行方式程序可读性差,而且不能存储,对于复杂的问题,应编写成能存储的程序文件。
将matlab语句构成的程序存储成以m为扩展名的文件,然后再执行该程序文件,这种工作模式称为程序文件模式。 程序文件不能在指令窗口下建立,因为指令窗口只允许一次执行一行上的一个或几个语句。

7 二、m文件的创建 m文件的类型是普通的文本文件,我们可以使用系统认可的文本文件编辑器来建立m文件。如dos下的edit,windows的记事本和word等。 具体的创建方法: 在matlab命令窗 口点击file 菜单 new  m-file 2 edit

8

9 2. 点击file — Save Workspace As
将工作空间中的内容存入文件。 3. !edit —— 用dos 下edit 编辑器编制m文件。 4. edit —— 用matlab自带的编辑器编制m文件。 5. word —— 用word编辑m文件。 m文件编辑器的设定 m文件编辑器可自己设定,设定方法是matlab命令窗口 options 菜单下点击 Edit Preference 选定m文件编辑器。

10 m文件编辑器缺省设置是 c:\windows\notepad.exe 还可设成:c:\windows\write.exe c:\windows\command\edit.com c:\program file\office\winword.exe 注意:所创建的m文件必须纳入matlab搜索路 径后,才能在matlab命令窗口运行。

11 matlab搜索路径的设置 matlab 缺省路径是c:\matlab\bin 1. cd c:\myfile 2. path(path,'c:\myfile') 3. 打开matlabrc.m文件,将c:\myfile加上即可。 4. 用pathtool路径浏览器设定当前目录。

12 三、matlab文件的类型 数据文件 .mat
mat文件是matlab以标准二进制格式保存的数据文件,可将工作空间中有用的数据变量保存下来。 mat文件的生成和调用是由函数save和load完成的。 例如:load gatlin image(X)

13 colormap(gray);axis equal; axis('off')

14 命令文件实际上是一串指令的集合,与在命令窗口逐行执行文件中的所有指令,其结果是一样的。没有输入输出参数。
2. m文件 m文件的语法类似于c语言,但又有其自身特点。它只是一个简单的ASCII码文本文件,执行程序时逐行解释运行程序,matlab是解释性的编程语言。 m文件有两类独立的m文件 — 称命令文件 可调用m文件 — 称函数文件 (1). 命令文件 — 简单的m文件 命令文件实际上是一串指令的集合,与在命令窗口逐行执行文件中的所有指令,其结果是一样的。没有输入输出参数。

15 命令文件包括两部分:注释文件和程序文件 %RANK Number of linearly independent rows or columns. % K = RANK(X) is the number of singular values of X % that are larger than MAX(SIZE(X)) * NORM(X) * EPS. % K = RANK(X,tol) is the number of singular values of X that % are larger than tol. % Copyright (c) by The MathWorks, Inc. s = svd(x); if (nargin == 1) tol = max(size(x)) * max(s) * eps; end r = sum(s > tol); 程序部分

16 [X,Y,Z]=peaks(30); surf(X,Y,Z) axis([-3,3,-3,3,-10,10]) axis off; shading interp; colormap(hot); m=moviein(20); %建立一个20列大矩阵 for i=1:20 view( *(i-1),30) %改变视点 m(:,i)=getframe; %将图形保存到m矩阵 end movie(m,2); %播放画面2次

17 [x,y]=meshgrid(-5:0.1:5); z=cos(x).*cos(y).*exp(-sqrt(x.^2+y.^2)/4); surf(x,y,z);shading interp; pause %程序暂停 i=find(x<=0&y<=0); z1=z;z1(i)=NaN; surf(x,y,z1);shading interp;

18 (2).matlab内置函数文件 matlab自定义的函数文件称内置函数文件 调用内置函数的方法:使用函数名并给出相应的入口、出口参数即可。 例如:sin.m函数——用type sin查不到。 调用格式:y=sin(2*x) 实际应用中: x=0:2*pi/180:2*pi; y=sin(2*x) plot(x,y)

19 (3). 函数m文件— 需要输入变量,返回输出变量
又如 sqrt(x) —— 求x的平方根 abs(x)—— 求x的绝对值 det(a)—— 求行列式的值 等等。matlab拥有大量的内置数学函数,供我们在数值运算和符号运算中调用。 (3). 函数m文件— 需要输入变量,返回输出变量 matlab用户可以根据需要编辑自己的m文件,它们可以像库函数一样方便的调用,从而极大地扩展了matlab 的能力。

20 对于某一类特殊问题,如创建了许多m函数文件,则可形成新的工具箱。
这种用matlab语言创建定义新的matlab函数的功能,正体现了matlab语言强大的扩展功能。

21 函数m文件的格式: function 返回变量=函数名(输入变量) 注释说明语句段 程序语句段 特定规则: 函数m文件第一行必须以单词function作为引导词,必须遵循如下形式: function <因变量>=<函数名>(<自变量>) m文件的文件名必须是<函数名> .m。 程序中的变量均为局部变量,不保存在工作空间中。 其变量只在函数运行期间有效。

22 (4). 系统文件——s函数 用于描述系统运动的专用函数,是特殊的 m 文件。 s 函数有3类:  由simulink结构图自动创建  可用c语言程序设计mex文件直 接定义  用函数m文件编写 s函数一旦创建,即可在框图中使用,也可在文件中调用。

23 [sys, x0]=sfunction( t, x, u, flag)
S函数与函数m文件类似,只是输入、输出变量是限定的。 用户定义的系统 当前输入值 状态初值 系统状态 当前时刻 标志量 当前状态值

24 M文件与函数之间可以互相调用 函数必须遵循以下特定的规则。 1. 函数名和文件名必须相同。例如,函数fliplr 存储在名为fliplr.m 文件中。 2. MATLAB头一次执行一个M文件函数时,它打开相应的文本文件并将命令编辑成存储器的内部表示,以加速执行以后所有的调用。如果函数包含了对其它M文件函数的引用,它们也同样被编译到存储器。普通的脚本M文件不被编译,即使它们是从函数M文件内调用;打开脚本M文件,调用一次就逐行进行注释。 3. 在函数M文件中,到第一个非注释行为止的注释行是帮助文本。当需要帮助时,返回该文本。例如, » help fliplr返回上述前八行注释。

25 4. 第一行帮助行,名为H1 行,是由lookfor 命令搜索的行。
5. 函数可以有零个或更多个输入参量。函数可以有零个或更多个输出参量。 6. 函数可以按少于函数M文件中所规定的输入和输出变量进行调用,但不能用多于函数M文件中所规定的输入和输出变量数目。如果输入和输出变量数目多于函数M文件中function 语句一开始所规定的数目,则调用时自动返回一个错误。 7. 当函数有一个以上输出变量时,输出变量包含在括号内。例如,[V,D] = eig(A)。不要把这个句法与等号右边的[V,D] 相混淆。右边的[V,D] 是由数组V和D 所组成。 8. 当调用一个函数时,所用的输入和输出的参量的数目,在函数内是规定好的。函数工作空间变量nargin 包含输入参量个数;函数工作空间变量nargout 包含输出参量个数。事实上,这些变量常用来设置缺省输入变量,并决定用户所希望的输出变量。

26 计算f(1)f(2)+f2(3) 首先建立一个M函数:fun1.m function Y= fun1(x) Y=(x^3 - 2*x^2 + x - 6.3)/(x^ *x ); 在命令窗口键入: fun1(1)*fun1(2)+fun1(3)*fun1(3)

27 function output = fact(n)
例:计算阶乘函数 fact.m function output = fact(n) if n == 1 output = 1; return; end output = n*fact(n-1);

28 [circle.m] function sa = circle(r,s) %CIRCLE plot a circle of radii r in the line specified by s. % r 指定半径的数值 % s 指定线色的字符串 % sa 圆面积 % % circle(r) 利用蓝实线画半径为 r 的圆周线. % circle(r,s) 利用串 s 指定的线色画半径为 r 的圆周线. % sa=circle(r) 计算圆面积,并画半径为 r 的蓝色圆面. % sa=circle(r,s) 计算圆面积,并画半径为 r 的 s 色圆面.

29 if nargin>2 error('输入宗量太多'); end; if nargin==1 s='b'; clf; t=0:pi/100:2*pi; x=r*exp(i*t); if nargout==0 plot(x,s); else sa=pi*r*r; fill(real(x),imag(x),s) end axis('square')

30 全局变量与局部变量 全局变量用global命令定义,格式为: global 变量名 例: 先建立函数文件wadd.m,该函数将输入的参数加权相加。 function f=wadd(x,y) global ALPHA BETA f=ALPHA*x+BETA*y; 在命令窗口中输入: ALPHA=1; BETA=2; s=wadd(1,2)

31 (4). 函数句柄 函数句柄是matlab6特有的语言结构,其优点: 方便地实现函数间互相调用 兼容函数加载的所有方式 拓宽子函数包括局部函数的使用范围 提高函数调用的可靠性 减少程序设计中的冗余 提高重复执行的效率 数组、结构数组、细胞型数组结合定义数据

32 函数句柄的创建和显示 f_h = @plot 函数句柄的内容通过functions显示 functions(f_h) ans = function: 'plot' type: 'overloaded' file: 'MATLAB built-in function' methods: [1x1 struct]

33 matlab的函数类型 simple —— 未加载的内部函数、m文件 overloaded ——加载的内部函数、m文件 subfunction —— 子函数 constructor —— matlab类的创建函数 private —— 局部函数

34 函数句柄的调用和操作 可通过函数feval进行函数句柄的调用 feval(函数句柄) f_h1=@peaks feval(f_h1)
feval(f_h,0:10,0:10)

35 函数句柄与函数名字符串转换 func2str —— 函数名字符串转换函数句柄 funh=str2func('det') funh = @det str2func —— 函数句柄转换函数名字符串 func2str(funh) ans = det

36

37 程序调试 1 程序调试概述 一般来说,应用程序的错误有两类,一类是语法错误,另一类是运行时的错误。语法错误包括词法或文法的错误,例如函数名的拼写错、表达式书写错等。 程序运行时的错误是指程序的运行结果有错误,这类错误也称为程序逻辑错误。

38 2 调试器 1.Debug菜单项 该菜单项用于程序调试,需要与Breakpoints菜单项配合使用。 2.Breakpoints菜单项 该菜单项共有6个菜单命令,前两个是用于在程序中设置和清除断点的,后4个是设置停止条件的,用于临时停止M文件的执行,并给用户一个检查局部变量的机会,相当于在M文件指定的行号前加入了一个keyboard命令。

39 3 调试命令 除了采用调试器调试程序外,MATLAB还提供了一些命令用于程序调试。命令的功能和调试器菜单命令类似,具体使用方法请读者查询MATLAB帮助文档。

40 四、matlab的程序结构 (1).顺序结构 —— 依次顺序执行程序的各条语句
(2).循环结构 —— 被重复执行的一组语句,循环是计算机解决问题的主要手段。 循环语句主要有:  for — end

41 sum = 153 语法为: for i = 表达式 (表达式为一个向量) 可执行语句 end
pdr=1; for k=1:i pdr=pdr*k; sum=sum+pdr; sum = 153

42 while循环将循环体中的语句循环执行不定次数。 语法为:while 表达式 循环体语句 end
表达式一般是由逻辑运算和关系运算以及一般运算组成的,以判断循环的进行和停止;只要表达式的值 非0,继续循环;直到表达式值为0,循环停止。

43 例:用while循环求1~100间整数的和 sum=0; i=1; while i<=100 sum=sum+i; i=i+1; end sum sum = 5050

44 break语句和continue语句 与循环结构相关的语句还有break语句和continue语句。它们一般与if语句配合使用。 break语句用于终止循环的执行。当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句。 continue语句控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。

45 求[100,200]之间第一个能被21整除的整数。 程序如下: for n=100:200 if rem(n,21)~=0 continue end break n

46 (3). 分支结构——根据一定条件来执行的各条语
句。 if — else — end语句有3种形式  if 表达式 执行语句 end  if 表达式 ——— 是 语句1 else ———— 否 语句2

47  if 表达式1 ——— 多分支 语句1 elseif 表达式2 语句2 elseif 表达式3 语句3 else 语句n end 这种结构实现了一种多路选择,比较复杂。可替代一般高级语言中的switch-case-end语句

48 例3-5 输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应的数值,若为其他字符则原样输出。
c=input('请输入一个字符','s'); if c>='A' & c<='Z' disp(setstr(abs(c)+abs('a')-abs('A'))); elseif c>='a'& c<='z' disp(setstr(abs(c)- abs('a')+abs('A'))); elseif c>='0'& c<='9' disp(abs(c)-abs('0')); else disp(c); end

49 switch语句 switch语句根据表达式的取值不同,分别执行不同的语句,其语句格式为: switch 表达式 case 表达式1 语句组1 case 表达式2 语句组2 …… case 表达式m 语句组m otherwise 语句组n end

50 switch-case结构 【例】学生的成绩管理,用来演示switch结构的应用。 %划分区域:满分(100),优秀(90-99),良好(80-89),及格(60-79),不及格(<60)。

51 N = input('输入分数'); switch N case %得分为100时 S ='满分'; %列为'满分'等级 case %得分在90和99之间 S =' 优秀'; %列为'优秀'等级 case %得分在80和89之间 S =' 良好'; %列为'良好'等级 case %得分在60和79之间 S =' 及格'; %列为'及格'等级 otherwise %得分低于60。 S ='不及格'; %列为'不及格'等级 end disp(S)

52 例3-6 某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):
输入所售商品的价格,求其实际销售价格。

53 price=input('请输入商品价格');
switch fix(price/100) case {0,1} %价格小于200 rate=0; case {2,3,4} %价格大于等于200但小于500 rate=3/100; case num2cell(5:9) %价格大于等于500但小于1000 rate=5/100; case num2cell(10:24) %价格大于等于1000但小于2500 rate=8/100; case num2cell(25:49) %价格大于等于2500但小于5000 rate=10/100; otherwise %价格大于等于5000 rate=14/100; end price=price*(1-rate) %输出商品实际销售价格

54 try语句 语句格式为: try 语句组1 catch 语句组2 end try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2

55 矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。
程序如下: A=[1,2,3;4,5,6]; B=[7,8,9;10,11,12]; try C=A*B; catch C=A.*B; end C lasterr %显示出错原因

56 try-catch结构 【例】try-catch结构应用实例。 clear,N=4;A=magic(3); %设置3行3列矩阵A。 try A_N=A(N,:), %取A的第N行元素 catch A_end=A(end,:), %如取A(N,:)出错,则改A的最后一行。 end lasterr %显示出错原因

57 a=2;b=2; x=-a:0.2:a;y=-b:0.2:b; for i=1:length(y) for j=1:length(x) if x(j)+y(i)>1 z(i,j)=0.5457*exp(-0.75*y(i)^2-3.75*x(j)^2-1.5*x(j)); elseif x(j)+y(i)<=-1 z(i,j)=0.5457*exp(-0.75*y(i)^2-3.75*x(j)^2+1.5*x(j)); else z(i,j)=0.7575*exp(-y(i)^2-6.*x(j)^2); end axis([-a,a,-b,b,min(min(z)),max(max(z))]); colormap(flipud(winter)); surf(x,y,z);

58 %Play the game of guess the number
x=fix(100*rand); %a random number calculated by the computer n=7;test=1; for k=1:7 numb=int2str(n); disp(['You have a right to ',numb,' guesses']) disp(['A guess is a number between 0 and 100']) guess=input('Enter your guess:');

59 if guess<x disp('Low') elseif guess>x disp('High') else disp('You won') test=0; break; end n=n-1; if test==1 disp('You lost')

60 关系操作符 >, < ,<=, >=, = =, ~= 等 逻辑操作符 &,| , ~等
在条件表达式中,通常都是由 关系操作符 >, < ,<=, >=, = =, ~= 等 逻辑操作符 &,| , ~等 逻辑函数:isequal —— 若是相等则为真 isempty ——若是空矩阵则为真 isstr —— 若是字符串则为真 例:编写m函数,计算函数值 x (x<1) 2x-1 (1<x<10) 3x-11 (x>=10)

61 五、matlab程序流的控制 echo 指令— 用来控制m文件在执行过程中是否 显示 echo on — 打开所有命令文件的显示方式
matlab的控制语句同c语言有相似之处, 但没有c 语言复杂、灵活和多变。因而语法比较简单,容易掌握。 echo 指令— 用来控制m文件在执行过程中是否 显示 echo on — 打开所有命令文件的显示方式 echo off — 关闭所有命令文件的显示方式 echo — 在以上两者间切换

62 echo file on — 打开file函数文件的显示方式 echo file off — 关闭file函数文件的显示方式
echo对于命令文件函数文件有所不同,命令文件用法简单,函数对所有命令起作用;函数文件用法较复杂,具体请help查询。 echo file on — 打开file函数文件的显示方式 echo file off — 关闭file函数文件的显示方式 echo file — 切换file函数文件的显示方式 echo on all — 打开所有函数文件的显示方式 echo off all —关闭所有函数文件的显示方式

63 input —— 提示用户从键盘输入数值、字符串、表达式。
例:n=input('How many apples= ') How many apples= 5 n = 5 pause —— 暂停,等待用户响应 可令m文件执行暂停,并在继续执行前按任一个键 。

64 keyboard —— 与input类似,功能更强
keyboard 调用键盘与调用m文件一样,当keyboard在m文件中出现时,它停止文件的执行并控制键盘,用于修改程序。 break —— 中断 break 中断for, while循环语句的执行,在嵌套循环结构中, break进从最里层循环推出。 menu —— 产生一个拥护可选择输入的菜单 格式:k=menu( ‘标题’,‘菜单1’,‘菜单2’ …)

65 六、文件操作 打开和关闭文件(fopen, fclose) 格式:fid=fopen(‘数据文件’,‘r’) ‘r’ —— 读
matlab文件输入、输出(I/O)函数允许把其它格式的数据文件直接读进matlab,它是以c语言文件I/O函数为基础的。 打开和关闭文件(fopen, fclose) 格式:fid=fopen(‘数据文件’,‘r’) ‘r’ —— 读 ‘w’ —— 写 ‘a’ —— 附加 ‘rt’ —— 读写

66 文件一旦打开,即可进行读写操作。 sta=fclose(fid) —— 关闭上述打开文件 sta=fclose(all) —— 关闭所有打开的文件 与save,load类似,是matlab专用数据文件读写工具(*.mat)。 2. 读写二进制数据文件 fread, fwrite —— 可读写数据文件,文本文件。 例:fid=fopen(‘user.dat’,’r’) a=fread(fid,50) sta=fclose(fid)

67 七、应用程序接口 应用程序接口——是matlaab的附加组件。是一个 由相关函数组成的接口函数库,可实现与外部程 序的交互。
MEX文件:是matlab环境下调用C、FORTRAN 语言编写的应用程序模块。 matlab 计算引擎:在使用C、FORTRAN编程时 可调用matlab函数库进行计算。 MAT文件:实现matlab与C、FORTRAN语言程序间的 数据交换

68 八、matlab编译 matlab编译的原因: 1. 提高运算速度 2. 隐藏特定算法 3. 可产生独立的m文件
matlab编译函数:mcc MCC [-options] fun [fun2 ...] [mexfile1 ...] [mlibfile1 ...]

69 例1: x=0:pi/100:2*pi; y=2*sin(5*x).*sin(x); hl=plot(x,y); hc=uicontextmenu; %建立快捷菜单 hls=uimenu(hc,'Label','线型'); %建立菜单项 hlw=uimenu(hc,'Label','线宽'); uimenu(hls,'Label','虚线','Call','set(hl,''LineStyle'','':'');'); uimenu(hls,'Label','实线','Call','set(hl,''LineStyle'',''-'');');

70 例2 hf=figure('Color',[0,1,1],'Position',[100,200,400,200],... 'Name','数制转换','NumberTitle','off','MenuBar','none'); uicontrol(hf,'Style','Text', 'Units','normalized',... 'Position',[0.05,0.8,0.45,0.1],'Horizontal','center',... 'String','输 入 框','Back',[0,1,1]); uicontrol(hf,'Style','Text','Position',[0.5,0.8,0.45,0.1],... 'Units','normalized','Horizontal','center',... 'String','输 出 框','Back',[0,1,1]);

71 uicontrol(hf,'Style','Edit','Position',[0.25,0.4,0.2,0.1],...
'Units','normalized','Back',[0,1,0]); uicontrol(hf,'Style','Frame','Position',[0.52,0.33,0.45,0.45],... 'Units','normalized','Back',[1,1,0]); ht=uicontrol(hf,'Style','Text','Position',[0.6,0.5,0.3,0.1],... 'Units','normalized','Horizontal','center','Back',[0,1,0]); COMM=['n=str2num(get(he1,''String''));',... 'b=str2num(get(he2,''String''));',... 'dec=trdec(n,b);','set(ht,''string'',dec);']; uicontrol(hf,'Style','Push','Position',[0.18,0.1,0.2,0.12],... 'String','转 换','Units','normalized','Call',COMM); uicontrol(hf,'Style','Push','Position',[0.65,0.1,0.2,0.12],... 'String','退 出','Units','normalized','Call','close(hf)');

72

73 MATLAB文件操作 1 文件的打开与关闭 2 文件的读写操作 3 数据文件定位

74 1 文件的打开与关闭 文件的打开 fopen函数的调用格式为: fid= fopen(文件名,打开方式) 其中文件名用字符串形式,表示待打开的数据文件。常见的打开方式有:‘r’表示对打开的文件读数据,‘w’表示对打开的文件写数据,‘a’表示在打开的文件末尾添加数据。 fid用于存储文件句柄值,句柄值用来标识该数据文件,其他函数可以利用它对该数据文件进行操作。

75 文件数据格式有两种形式,一是二进制文件,二是文本文件。在打开文件时需要进一步指定文件格式类型,即指定是二进制文件还是文本文件。

76 2 文件的关闭 文件在进行完读、写等操作后,应及时关闭。关闭文件用fclose函数,调用格式为: sta=fclose(fid) 该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回–1。

77 文件的读写操作 二进制文件的读写操作 1.读二进制文件 fread 函数可以读取二进制文件的数据,并将数据存入矩阵。其调用格式为: [A,COUNT]=fread(fid,size, precision) 其中A用于存放读取的数据,COUNT返回所读取的数据元素个数,fid为文件句柄,size为可选项,若不选用则读取整个文件内容,若选用则它的值可以是下列值:

78 (1) N表示读取 N个元素到一个列向量。 (2) Inf表示读取整个文件。 (3) [M,N]表示读数据到M×N的矩阵中,数据按列存放。 precision代表读写数据的类型

79 2.写二进制文件 fwrite 函数按照指定的数据类型将矩阵中的元素写入到文件中。其调用格式为: COUNT=fwrite (fid, A, precision) 其中COUNT返回所写的数据元素个数,fid为文件句柄,A用来存放写入文件的数据,precision用于控制所写数据的类型,其形式与fread函数相同。

80 例1 建立一数据文件magic5. dat,用于存放5阶魔方阵。 程序如下: fid=fopen(‘magic5
例1 建立一数据文件magic5.dat,用于存放5阶魔方阵。 程序如下: fid=fopen(‘magic5.dat’,‘w’); cnt=fwrite(fid,magic(5),‘int32’); fclose(fid);

81 2 文本文件的读写操作 1.读文本文件 fscanf 函数的调用格式为: [A,COUNT]= fscanf (fid, format, size) 其中A用以存放读取的数据,COUNT返回所读取的数据元素个数。fid为文件句柄。format用以控制读取的数据格式,由%加上格式符组成,常见的格式符有d,f,c,s。 size为可选项,决定矩阵A中数据的排列形式。

82 2.写文本文件 fprintf 函数的调用格式为: COUNT= fprintf(fid, format, A) 其中A存放要写入文件的数据。先按format指定的格式将数据矩阵A格式化,然后写入到fid所指定的文件。格式符与fscanf函数相同。

83 3 数据文件定位 MATLAB提供了与文件定位操作有关的函数fseek和ftell。fseek函数用于定位文件位置指针,其调用格式为: status=fseek(fid, offset, origin) 其中fid为文件句柄,offset表示位置指针相对移动的字节数,origin表示位置指针移动的参照位置。若定位成功,status返回值为0,否则返回值为–1。

84 ftell函数返回文件指针的当前位置,其调用格式为: position=ftell (fid) 返回值为从文件开始到指针当前位置的字节数。若返回值为–1表示获取文件当前位置失败。


Download ppt "第七节 matlab的程序设计 —— matlab语言称为第四代编程语言,程序简洁、可读性很强而且调试十分容易。"

Similar presentations


Ads by Google