当前位置:首页 > Matlab 入门教程
例
-302-
a=[0,5;0,7]
[i,j,v]=find(a)
例 找出a 中不等于7 的元素的位置。 a=[0,5;0,7] find(a~=7)
例 将矩阵a 中等于7 的元素的值换成矩阵c 中相应位置上的元素。 a=[0,5;0,7] c=rand(2,2)
a(find(a==7))=c(find(a==7)) 例 将矩阵a 中等于0 的元素删除。 a=[1,0,5;0,2,7] a(find(a==0))=[] b=reshape(a,[2,2]) b(:,2)=[]
3.流程控制语句
计算机程序通常都是从前到后逐条执行的。但往往也需要根据实际情况,中途
改变执行的次序,称为流程控制。Matlab 设有4 种流程控制的语句结构,即if 语 句、while 语句、for 语句和switch 语句。 i)if 语句
根据复杂程度,if 语句有3 种形式 if 表达式 语句组a, end
if 表达式1 语句组a, else 语句组b, end
if 表达式1 语句组a, elseif 表达式2 语句组b,else 语句组c,end ii)while 语句
while 语句的结构形式为
while 表达式 语句组, end
例 求Matlab 中的一个充分大的实数。
设定一个数x,让它不断增大,直到Matlab 无法表示它的值,只能表示为Inf 为止。 x=rand; while x~=Inf x1=x;x=2*x; end x1
iii)for 语句
for 语句的结构形式为
for k=初值:增量:终值 语句组a,end
iv)switch 语句
switch-case―otherwise 语句可用来实现均衡的多分支语句,其基本语句结 构可表示为
switch 表达式(标量或字符串) case 值1
语句组1 case 值2 语句组2
-303-
……
otherwise 语句组n
end
例 判断输入数n 的奇偶性。 n=input('n=') switch mod(n,2) case 1,a='奇' case 0,a='偶'
otherwise,a='非整数' end
4.M 文件与M 函数
由Matlab 语句构成的程序文件称作M 文件,它将m 作为文件的扩展名。M 文 件可分为程序文件和函数文件两种。
程序文件一般是由用户为解决特定的问题而编制的程序,函数文件也称为子程 序,它必须由Matlab 程序来调用。函数文件往往具有一定的通用性,并且可以进 行递归调用。
i)程序文件
程序文件的格式特征如下:
(1)前面的若干行通常是程序的注释,每行以“%”开始,当然注释可以放
在程序的任何部分。注释可以是汉字,注释是对程序的说明,它增加了程序的可读 性。在执行程序时,Matlab 将不理会“%”后直到行末的全部文字。
(2)然后是程序的主体。如果文件中有全局变量,即子程序和主程序共用的 变量,应在程序的起始部分注明。其语句是 global 变量名1 变量名2 ??
(3)整个程序应按Matlab 标识符的要求起文件名,文件名不能以数字开始, 不允许用汉字。 ii)函数文件
函数文件是用来定义子程序的。它与程序文件的主要区别有3 点: (1)由function 起头,后跟的函数名要与文件名相同。
(2)有输入输出变量,可进行变量传递。
(3)除非用global 声明,程序中的变量均为局部变量,不保存在工作空间中。 例 编写求阶乘的函数。 function y=fac(n); if n<0
error('n is smaller than 0,error input.'); return; end
if n==0|n==1 y=1;
else
y=n*fac(n-1); end
并把上述文件命名为fac.m,调用函数时实际上是调用文件名。 5.利用字符串模拟运算式
-304-
利用字符串建立表达式后,再用eval 命令执行它,可以使程序设计更加灵活。 但是注意表达式一定要是字符串。其命令格式为: eval(’字符串’)
例 先定义字符串t 为平方根运算,再用eval 求出1 到10 的平方根。 clear,clc t='sqrt(i)';
for i=1:10
s(i)={char(['The square root of ', int2str(i), ' is ',... num2str(eval(t))])};
%上面大括号{}代表建立数组
end s(:)
例 如果要输入几十个甚至上百个文件,用手工操作十分繁琐,然而灵活运用 eval 函数可以自动完成这一工作。假设数据文件名从data1.dat~data10.dat,放 在D:\\matlab\\chp 目录下,操作如下:
for i=1:10
eval(['load d:\\matlab\\chp\\data',int2str(i),'.dat']) end
函数feval 用于执行字符串代表的文件或函数。 例
fun=['sin';'cos';'log']; k=input('选择第几个函数:'); x=input('输入数值:'); feval(fun(k,:),x)
例 当前matlab\\work 目录下有三个图形文件hlpstep1.gif~hlpstep3.gif, 分别打开这三个文件。 clear,clc
fun='imread';
for i=1:3
str=char(['hlpstep',int2str(i),'.gif']); x=feval(fun,str) end
§4 文件
根据数据的组织形式,Matlab 中的文件可分为ASCII 文件和二进制文件。ASCII 文件又称文本文件,它的每一个字节放一个ASCII 代码,代表一个字符。二进制文 件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。 Matlab 中的关于文件方面的函数和C 语言相似。 函 数 分 类 函数名 作 用
fopen 打开文件 打开和关闭文件 fclose 关闭文件 fread 读二进制文件 读写二进制文件
fwrite 写二进制文件
格式I/O fscanf 从文件中读格式数据
-305-
fprintf 写格式数据
fgetl 从文件中读行,不返回行结束符 fgets 从文件中读行,返回行结束符 sprintf 把格式数据写入字符串 读写字符串
sscanf 格式读入字符串 feof 检验是否为文件结尾 fseek 设置文件定位器 ftell 获取文件定位器 文件定位
frewind 返回到文件的开头
1.文件的打开和关闭
对文件读写之前应该“打开”该文件,在使用结束之后应“关闭”该文件。 函数fopen 用于打开文件,其调用格式为: fid=fopen(‘filename’,’permission’)
fid 是文件标识符(file identifier),fopen 指令执行成功后就会返回一个 正的fid 值,如果fopen 指令执行失败,fid 就返回-1。 filename 是文件名。
permission 是文件允许操作的类型,可设为以下几个值: ‘r’ 只读 ‘w’ 只写
‘a’ 只能追加(append)
‘r+’ 可读可写
与fopen 对应的指令为fclose,它用于关闭文件,其指令格式为: status=fclose(fid)
如果成功关闭文件,status 返回的值就是0。 2.读写操作
i)fwrite 的指令格式
fid=fopen(‘filename’,’permission’) fwrite(fid,要保存的数据矩阵,’精度格式’) 执行help fread 即可查到精度格式的设定。 ii)fprintf 的指令格式
fprintf(fid,’数据格式’,需要保存的数据矩阵)
例 产生10 个随机数,并保存到一个纯文本文件data1.txt 中。 clear,clc a=rand(1,10)
共分享92篇相关文档