第三章 MATLAB程序设计基础.docx
- 文档编号:22796396
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:13
- 大小:20.67KB
第三章 MATLAB程序设计基础.docx
《第三章 MATLAB程序设计基础.docx》由会员分享,可在线阅读,更多相关《第三章 MATLAB程序设计基础.docx(13页珍藏版)》请在冰豆网上搜索。
第三章MATLAB程序设计基础
第三章MATLAB程序设计基础
一,数据及数据文件
1.数据类型:
字符数组、数值数组、单元数组、结构数组
Java类和函数句柄等(表3—1)。
在工作空间浏览器中不同的数据类型有着不同的图标标识(图3—2。
2.数据文件
MATLAB支持的各种数据文件及其调用方法和返回值见(表3—2)
(1)二进制数据文件:
以.mat为扩展名。
是标准的MATLAB数据文件。
.mat文件可以由MATLAB提供的save和load命令直接存取。
(2)ASCⅡ码数据文件:
扩展名为.txt,.dat等,可以是MATLAB环境下存储,也可能是其他软件的计算结果,可以被MATLAB调用,也可以用文本编辑器打开进行观察与修改。
可以用save和load命令进行读入和存取。
(3).图象文件:
扩展名为.bmp,.jpg.tif等,用于图形图象处理,可以用imread和imwrite命令进行读入和存取。
(4).声音文件:
扩展名为.wav,用waveread和wavwrite命令进行读入和存取。
3.数据输入向导
File菜单下的工具ImportWizard用于将各种类型数据文件中的数据导入工作空间,称为数据输入向导。
在Import对话框中输入需要导入的数据文件名后出现ImportWizard窗口,可预观测将要导入的数据、显示图象、播放声音等。
几种数据的导入:
(1)mat数据文件
调入途径:
File输入文件名,也可用Browse打开文件浏览器选择输入文件;Clipboard,数据从剪贴板中调入。
窗口内容:
左侧,变量名称、大小、类型。
右侧观察前10行10列信息。
Next:
显示数据输入向导窗口第二页。
(2)ASCⅡ码数据文件:
输入ASCⅡ数据文件名---选择显示数据内容(date)或头文本内容(textdate)---选择Next下一页进行导入内容选择(通过钩选决定将何变量导入工作空间)----按Finish完成导入操作或按Cancel终止数据的导入。
(3)图象数据文件:
输入图形数据文件名---点击showimage(可在图象上拖曳放大区域)------按Finish完成数据导入(或按Cancel终止数据导入。
(4)。
声音数据文件:
输入声音数据文件名---点击PlaySound弹出一个显示声音数据波形的图形窗口(按Playagine按钮重新播放声音,按Done按钮关闭预观察窗口)------按Finish完成数据导入(或按Cancel终止数据导入。
(5)剪贴板的数据:
需要导入已存放在系统剪贴板中的数据,点数据输入向导窗口中的Clipboard选项,--Next进入下一页--按Finish完成数据导入(或按Cancel终止数据导入。
二.M文件
MATLAB的两种工作方式:
1,交互式命令操作方式—通过命令窗口进行交互式操作;2,M文件的编程工作方式。
1.M文件编程:
可用普通文本编辑器编制MATLAB文件,文件由纯ASCⅡ字符组成,确定文件名后加.m扩展名,称为M文件。
运行M文件时,只需在命令窗口键入文件名即可。
MATLAB提供了一个方便的编辑/调试器,功能较多,推荐使用。
建立M文件的一般步骤:
(1)打开文件编辑器:
最简单的方法是在操作桌面的工具栏上选择新建文件键(NewM-File)或打开已有文件键(OpenFile),也可以在命令窗口输入命令edit建立新文件或输入editfilename,打开名为filename的M文件;
(2)编写程序内容:
编写新的文件或修改已有文件;
(3)保存文件:
文件运行前必须完成保存操作,与一般的文件编辑保存操作相同;
(4)运行文件:
在命令窗口输入文件名即可运行。
如要在编辑器中直接完成运行,可在编辑器的Debug菜单下saveandrun选项,或按Run快捷键,最快捷的方法是直接按F5键执行运行。
M文件有两种形式:
命令文件(ScriptFile)和函数文件(FunctionFile)
2。
命令文件:
M文件中最简单的一种,不需输出输入参数,用M文件可以控制工作空间的所有数据。
运行过程中产生的变量都是全局变量。
运行一个命令文件等价于从命令窗口中顺序运行文件里的命令,程序不需要预先定义,只要依次将命令编辑在命令文件中即可。
例:
用三角函数计算画出花瓣图形。
theta=-pi:
0.01:
pi;
rho(1,:
)=2*sin(5*theta).^2;
rho(2,:
)=cos(10*theta).^3;
rho(3,:
)=sin(theta).^2;
rho(4,:
)=5*cos(3.5*theta).^3;
fork=1:
4
Subplot(2,2,k),polar(theta,rho(k,:
))
end
将程序保存成名为petals的M文件,并运行。
注:
(1)‘%‘引导注释行,不予执行;
(2)不需要用“end”最为M文件的结束标志;
(3)若文件存放在自己的目录上,在运行文件前,应先将自己的目录设置为当前工作目录。
最简单方法:
在当前目录浏览器中设置。
(4)运行后存放在工作空间的变量可以用工作空间浏览器查看。
3。
函数文件
如果M文件的第一个可执行行以function开始,便是函数文件,每一个函数文件定义一个函数。
函数文件区别于命令文件之处在于命令文件的变量在文件执行完成后保留在工作空间中,而函数文件内定义的变量只在函数文件内起作用,文件执行完后即被清除。
例:
建立average函数用于计算矢量中单元的平均值。
functiony=average(x)
%AVERAGEMeanofvectorelements.
%AVERAGE(X),WhereXisavector,isthemeanofvectorelement.
%Non-vectorinputresultsinanerror.
[m,n]=size(x);
if(~((m==1)|(n==1))|(m==1&n==1))
error('Inputmustbeavector')
end
y=sum(x)/length(x);
将文件存盘,缺省状态下自动存储名为average.m的函数。
这样只要接受一个输入参数便可计算返回一个输出参数,与其他MATLAB函数一样使用。
例:
用已建立的average函数文件求1~99的平均值。
z=1:
99;
average(z)
函数文件的基本组成部分:
(1)函数定义行:
由function引导,并定义函数名、输入参数和输出参数,函数定义行必须放在文件的第一个可执行行上。
可以设多个输入输出参数,如:
function[x,y,z]=sphere(theta,phi,rho)
也可以没有输出参数,如:
functionprintresults(x)
(2)H1行:
帮助文本的第一行,是供lookfor查询时使用的;
(3)帮助文本:
主要时为自己的函数文件建立在线查询信息;
(4)函数体:
包含全部的用于完成计算及给输出参数赋值等工作的语句;
(5)注释:
以%起始导行尾结束部分的说明文字。
可放置在程序中的任何部位。
2.局部变量与全局变量
用global就可以把一个变量定义为全局变量.MATLAB中变量名是区分大小写的,习惯上常将大写字母定为全局变量。
如:
globalABC
三.程序结构
8种控制程序流程的语句:
for,while,if,switch,try,continue,break,return
1。
循环语句
(1)for语句:
forv=表达式通常为一个矢量形式为:
m:
s:
n
语句体
end
例:
n=10
fori=1:
n
x(i)=(i+1).^2;
end
x
x=
49162536496481100121
例:
嵌套循环:
注意与end的配对。
m=3;n=4;
fori=1:
m
forj=1:
n
a(i,j)=1/(i+j-1);
end
end
formatrat
a
a=
11/21/31/4
1/21/31/41/5
1/31/41/51/6
例:
运用非1步长,产生0-20以内的偶数
fori=0:
2:
20
a(i/2+1)=i;
end
a
a=
02468101214161820
(2).While语句:
为条件循环语句。
循环不确定次数,只要表达式的结果非零,语句体就重复执行,直到循环条件不成立为止。
While表达式
语句体
end
例:
while循环,求解n!
达到100位数的第一个n是多少。
n=1;
whileprod(1:
n)<1e100
n=n+1;
end
n
n=
70
2.条件语句
(1)if—end语句
if表达式
语句体
end
(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);
holdon
fori=1:
n
ify(i)<-1
plot(x(i),y(i),’*g’)
elseify(i)>=-1&y(i)<=1
plot(x(i),y(i),’ob’)
elseify(i)>=1
plot(x(i),y(i),’xr’)
end
end
holdoff
(3)分支语句:
switch—case—end
通过对某个变量值的比较做各种不同的执行选择。
形式:
switch表达式(数字或字符串)
case数字或字符串1
语句体1;
case数字或字符串2
语句体2;
……
otherwise
语句体n;
end
例:
检查input_num的数值.
switchinput_num
case-1
disp(‘negativeone’);%当input_num=-1时显示
case0
disp(‘zero’);%当input_num=0时显示
case1
disp(‘positiveone’);%当input_num=1时显示
otherwise
disp(‘othervalue’);%当input_num等于其他值时显示
end
(4)检测语句:
用于检测错误并改变流程,形式:
try
语句体1
catch
语句体2
end
例:
判断错误语句的用法
n=4;a=magic(3)
try
a_n=a(n,:
),
catch
a_n=a(end,:
),
end
lasterr
a=
816
357
492
a_n=
492
ans=
Indexexceedsmatrixdimensions.
(5)其他流程控制语句:
(a),continue语句:
用于控制for循环和while循环跳过某些执行语句。
例:
continue语句的用法.
fid=fopen(‘magic.m’,’r’);%打开文件
count=0;%计数器置零
while~feof(fid)%判断是否到文件末尾
line=fgetl(fid);
ifisempty(line)|strncmp(line,’%’,1)
%判断是否为空行或注释行
continue%如果是空行或注释行继续下一次循环
end
count=count+1;%如果不是空行或注释行计数器加1
end
disp(sprintf(‘%dlines’,count));%显示行数
(b).break语句:
用于终止for循环和while循环的执行.
例:
break语句的用法.
fid=fopen(‘fft.m’,’r’);%打开文件
s=’‘;%清空字符数组
while~feof(fid)%判断是否为文件末尾
line=fgetl(fid);%从文件中读行
ifisempty(line)%如果是空行
break%如果是空行退出循环
end
s=strvcat(s,line);%如果不是空行,丛向连接字符数组
end
disp(s)%显示字符数组结果
(c)return语句:
用于终止当前的命令序列,并返回到调用的函数或键盘。
例:
return语句的用法.
functiond=det(A)%定义函数
%det(A)计算矩阵A的行列式
ifisempty(A)%如果矩阵是空的
d=1;
return%返回调用函数
else
…%计算过程略
end
四.数据的输入与输出
1.数据的输入
常用方法:
(a)键盘输入:
数据少时较方便,多时不益使用;
(b)用M文件产生数据:
使用于较多数据的输入;
(c)从ASCⅡ码文件装载数据:
对文本格式的数据文件可用load命令直接读入MATLAB,器内容存放在以文件名命名的变量中
(d)利用fopen,fscanf,fread及MATLAB其他低层I/O命令读取数据:
用于读取其他外部应用程序建立的各种特定格式的数据。
2。
数据的输出
(a)利用diary命令输出语句:
运行diary命令可以在当前工作目录上产生一个名为diary的日记文件,文件内容可以输出。
关闭日记文件的命令为dairyoff.
(b)利用Notebook获取数据:
于dairy用法相仿优点是文字质量高,版面规范,且M-book中的命令可以随时运行或修改,MATLAB工作空间中的数据随之改变。
运行Notebook要求计算机上装有MS-Word。
(c)save命令输出数据:
将当前内存中的变量存到文件中去。
(d)利用fopen,fprintf,fwrite及其他底层I/O命令输出特殊格式的数据:
如需要在其他外部应用程序中使用MATLAB输出的特定格式的数据,使用此方法。
3.Save和load命令的使用
(1)save(将工作空间的变量存入磁盘)命令的常用调用方法
(a)save:
将工作空间所有的变量以二进制格式存入名为matlab.mat的缺省文件;
(b)savedfile:
将工作空间所有的变量以二进制格式存入dfile.mat文件,扩展名自动产生
(c)savedfilex:
只把变量x以二进制格式存入dfile.mat文件,扩展名自动产生
(d)savedfile.datx-ascii:
将变量x以8位ASCⅡ码形式存入dfile.mat文件;
(e)savedfile.datx-ascii-double:
将变量x以16位ASCⅡ码形式存入dfile.mat文件;
(f)save(fname,‘a’,‘-ascii’):
fname是一个预先定义好的包含文件名的字符串,该用法将变量a以ASCⅡ码格式存入fname定义的文件中。
(2)load命令的常用方法
(a)load:
把磁盘matlab.mat的内容读入内存;
(b)loaddfile:
将磁盘文件dfile.mat内容读入内存;
(c)loaddfile.dat:
将磁盘文件dfile.mat内容读入内存,这是一个ASCⅡ码文件,系统自动将文件名定义为变量名;
(d)a=load(fname):
fname是预先定义好的包含文件名的字符串,将由fname定义文件名的数据文件调入a中。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三章 MATLAB程序设计基础 第三 MATLAB 程序设计 基础