MATLAB 第3章 MATLAB程序设计基础Word格式文档下载.docx
《MATLAB 第3章 MATLAB程序设计基础Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《MATLAB 第3章 MATLAB程序设计基础Word格式文档下载.docx(13页珍藏版)》请在冰点文库上搜索。
(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'
)
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
语句体
n=10
fori=1:
x(i)=(i+1).^2;
x
x=
49162536496481100121
嵌套循环:
注意与end的配对。
m=3;
n=4;
m
forj=1:
a(i,j)=1/(i+j-1);
end
format(形式)rat(分数表示)
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;
02468101214161820
(2).While语句:
为条件循环语句。
循环不确定次数,只要表达式的结果非零,语句体就重复执行,直到循环条件不成立为止。
While表达式
while循环,求解n!
达到100位数的第一个n是多少。
n=1;
whileprod(1:
n)<
1e100(prod(表示1~n个数相乘,即为n!
))
n=n+1;
(prod(a)表示矩阵的列向量相乘,
endprod(a,2)表示矩阵的行向量相乘)
n=
70
2.条件语句
(1)if—end语句
if表达式
(2)if—else--end语句
语句体1;
else
语句体2:
当计算的表达式结果为真时执行语句体1,结果为假时执行语句体2。
判断学生是否通过学业。
if((attendance>
=0.90)&
(grade>
=60))
pass=1;
fail=1;
(1)if—elseif—end语句
if表达式1
elseif表达式2
语句体2;
语句体3;
用色彩区分数据点的范围。
n=100;
x=1:
n;
y=randn(1,n);
holdon
ify(i)<
-1
plot(x(i),y(i),’*g’)
elseify(i)>
=-1&
y(i)<
=1
plot(x(i),y(i),’ob’)
plot(x(i),y(i),’xr’)
holdoff
(3)分支语句:
switch—case—end
通过对某个变量值的比较做各种不同的执行选择。
形式:
switch表达式(数字或字符串)
case数字或字符串1
语句体1;
case数字或字符串2
语句体2;
……
otherwise
语句体n;
检查input_num的数值.
switchinput_num
case-1
disp(‘negativeone’);
%当input_num=-1时显示
case0
disp(‘zero’);
%当input_num=0时显示
case1
disp(‘positiveone’);
%当input_num=1时显示
disp(‘othervalue’);
%当input_num等于其他值时显示
(4)检测语句:
用于检测错误并改变流程,形式:
?
加深了解
try
语句体1
catch
语句体2
判断错误语句的用法
a=magic(3)
a_n1=a(n,:
),
a_n2=a(end,:
),
lasterr
816
357
492
a_n=
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%如果是空行或注释行继续下一次循环
count=count+1;
%如果不是空行或注释行计数器加1
disp(sprintf(‘%dlines’,count));
%显示行数
(b).break语句:
用于终止for循环和while循环的执行.
break语句的用法.
fid=fopen(‘fft.m’,’r’);
s=’‘;
%清空字符数组
while~feof(fid)%判断是否为文件末尾
line=fgetl(fid);
%从文件中读行
ifisempty(line)%如果是空行
break%如果是空行退出循环
s=strvcat(s,line);
%如果不是空行,丛向连接字符数组
disp(s)%显示字符数组结果
(c)return语句:
用于终止当前的命令序列,并返回到调用的函数或键盘。
return语句的用法.
functiond=det(A)%定义函数
%det(A)计算矩阵A的行列式
ifisempty(A)%如果矩阵是空的
d=1;
return%返回调用函数
…%计算过程略
四.数据的输入与输出
1.数据的输入
常用方法:
(a)键盘输入:
数据少时较方便,多时不益使用;
(b)用M文件产生数据:
使用于较多数据的输入;
(c)从ASCⅡ码文件装载数据:
对文本格式的数据文件可用load命令直接读入MATLAB,器内容存放在以文件名命名的变量中
(d)利用fopen,fscanf,fread及MATLAB其他低层I/O命令读取数据:
用于读取其他外部应用程序建立的各种特定格式的数据。
数据的输出
(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中。