第 2章 Matlab语言程序设计
4、程序结构与流程控制语句
a) 顺序结构
b) 条件结构
if- else- end 语句第 2章 Matlab语言程序设计或折扣问题
>> book=20;
>> number=40;
>> sums=0.0;
>> if number>=30
sums=book*number*0.7;
end
>> sums
sums =
560
绘出函数 的图像。
>> x=-3:0.1:3;
>> if x>=1
y=2*x.^2+1;
plot(x,y)
elseif -1<x<1
y=5;
plot(x,y)
else
y=-x.^3;
plot(x,y)
end
1
110
112
3
2
xx
x
xx
y
第 2章 Matlab语言程序设计
switch语句第 2章 Matlab语言程序设计第 2章 Matlab语言程序设计多项选择
>> No=input('Please input your choice! ');
Please input your choice! 1
>> switch No
case 0
disp('return to main menu');
case 1
disp('She is a girl');
case 2
disp('He is a boy');
otherwise
disp('I can''t determine')
end
She is a girl
c) 循环结构
while 语句,
for语句,
for 变量 =初值:增量:结束值程序模块;
end
第 2章 Matlab语言程序设计
>> sum=0;
>> i=0;
>> while(i<=100)
sum=sum+1;
i=i+1;
end
>> sum
sum =
14196774
举例,
第 2章 Matlab语言程序设计
>> for I=1:10
A(I)=1/(I+1) ;
end
>> A
A =
Columns 1 through 7
0.5000 0.3333 0.2500 0.2000 0.1667
0.1429 0.1250
Columns 8 through 10
0.1111 0.1000 0.0909
break语句 循环结构 continue 语句 循环结构第 2章 Matlab语言程序设计
d) 其它与流程控制有关的语句
if if
pause 指令 使程序运行停止,等待用户按任意键继续;
input 指令 提示用户从键盘输入数值、字符串或表达式,并接受输入;
disp指令 在屏幕上显示字符串 ;
echo on指令 显示其后所有执行文件的指令;
echo off指令 关闭其后所有执行文件的指令显示。
第 2章 Matlab语言程序设计
5、数据 文件的操作第 2章 Matlab语言程序设计数据文件一般存放在磁盘介质上,用文件名标识,Matlab
系统对文件名没有特殊要求。数据文件的格式有两种形式:
一是二进制格式文件,二是 ASCII文本文件。
a) 数据文件的打开和关闭用 fopen函数打开数据文件:
Fid= fopen(filename,permission);
Fid为文件句柄,filename 为文件名。 permission 为文件打开格式,可以是:‘ r‘,?w‘,?a‘,?r+‘,?w+‘,?a+‘。
用 fclose函数关闭数据文件:
Sta=fclose(Fid);
b) 数据文件的读写用 fread读二进制数据文件:
[A,COUNT]=fread(Fid,size,precision)
其中,A为数据矩阵,用于存放读取的数据; COUNT
返所读取的数据元素个数,Fid 为文件句柄,size为读取范围,是可选项,若不选用则读取整个文件内容,
precision用于控制所读数据的精度格式。
例,Fid=fopen(?std.dat‘,‘r‘);
A=fread(Fid,100,‘long‘);
fclose(Fid);
第 2章 Matlab语言程序设计第 2章 Matlab语言程序设计用 fwrite写二进制文件:
COUNT=fwrite(Fid,A,precision)
例,Fid=fopen(?test.dat‘,?w‘);
cnt=fwrite(Fid,A,?float‘)
fclose(Fid);
用 fscanf读取 ASCII数据文件:
[A,COUNT]=fscanf(Fid,format,size)
format用以控制读取的数据格式,由%加上格式符组成,
常见的格式符有,d,i,o,u,x,e,f,s,c。
例,fscanf(Fid,?%s‘);
fscant(Fid,?%6.2f‘);
fscanf(Fid,―%5d‘);
用 fprint写 ASCII文本数据到文件或屏幕上:
COUNT=fprintf(Fid,format,A,…)
例,x=0:0.1:1;
y=exp(x)
Fid=fopen('exp.txt','w')
fprintf(Fid,'%6.2f,%12.8f\n',x,y)
fclose(Fid);
第 2章 Matlab语言程序设计
c) 从磁盘中直接读写内存变量
load将数据文件中的数据直接为 workspace中变量
load filename –ascii
load filename
save将 workspace中变量直接写到数据文件中
save filename A,… -ascii
save filename A,…
第 2章 Matlab语言程序设计第 2章 Matlab语言程序设计
6) M文件编程
a) 命令式文件如果要输入较多的命令,而且要经常对这些命令重复输入,利用命令文件将显得比较简单方便。
建立命令文件的方法根简单,就是将要输入的所有指令按顺序放到一个扩展名为,,m‖的文本文件中,每次运行时只要输入 M文件的文件名即可。
在命令文件运行过程中产生的所有变量均是全局变量 。
第 2章 Matlab语言程序设计例:编一个画宝石项链的程序
echo on
t=(0:0.02:2)*pi;
x=sin(t);
y=cos(t);
z=cos(2*t);
plot3(x,y,z,'b-',x,y,z,'bd')
view([-80,60])
box on
legend(?链子’,‘宝石’ );
存入文件 necklace.m
b) 函数式文件函数文件和命令文件的区别在于:命令文件的变量在文件执行完程序后仍然保留在内存中,而函数文件内定义的变量为 内部变量,仅在函数文件内部起作用。
函数 M文件通常由以下五部分组成:
函数定义行 ;
函数帮助行;
在线函数帮助文件 ;
注释 ;
函数体 。
第 2章 Matlab语言程序设计第 2章 Matlab语言程序设计例:计算第 n个 Fibonnaci斐波纳契数 (一种整数数列,
其中每数等于前面两数之和 )
function f=fibfun(n) 函数定义行 n—函数输入; f—函数输出; fibfun—函数名。
% FIBFUN For calculating Fibonacci numbers,函数帮助行
% Incidengtally,the name fibonacci comes from
% Filius Bonassi,or ―son of Bonassus‖ 在线函数帮助文件
% fibfun.m
if n>2
f=fibfun(n-1)+fibfun(n-2); 函数体
else
f=1;
end
注意,文件名必须与函数名相同执行:
fibfun(17),help fibfun,lookfor fibfun
第 2章 Matlab语言程序设计
7,M文件调试语法错误 和 运行错误对于 语法错误,Matlab通常能在编译和运行时立即发现,
给出相应的错误原因以及所在的行号,并终止其运行。
对于 运行错误,Matlab提供了 M文件的调试 (Debug)工具。
对于 命令文件,可以直接在文件编辑器中设置断点,用调试工具(菜单或工具栏)分步执行,并在工作空间中检查每个变量的值。(以 necklace.m为例)
对于 函数文件,可以先在文件编辑器中设置断点,再到命令行状态执行函数,然后再回到文件编辑器中进行观察和调试。(以 fibfun.m为例)
( 1)利用 for 循环求 1!+2!+3!…+20! 的值。
( 2)用 while 循环求 1~ 200 之间的整数之和。
( 3)编写一个 M 文件,画出下列分段函数所表示的曲面。
( 4)编写一个求圆的面积的函数文件。
( 5)编写一个求圆的面积的命令文件上机练习( 3)
15457.0
117575.0
154.0
),(
5.175.375.0
6
5.175.375.0
22
22
22
yxe
yxe
yxe
yxp
yyx
yx
yyx
4、程序结构与流程控制语句
a) 顺序结构
b) 条件结构
if- else- end 语句第 2章 Matlab语言程序设计或折扣问题
>> book=20;
>> number=40;
>> sums=0.0;
>> if number>=30
sums=book*number*0.7;
end
>> sums
sums =
560
绘出函数 的图像。
>> x=-3:0.1:3;
>> if x>=1
y=2*x.^2+1;
plot(x,y)
elseif -1<x<1
y=5;
plot(x,y)
else
y=-x.^3;
plot(x,y)
end
1
110
112
3
2
xx
x
xx
y
第 2章 Matlab语言程序设计
switch语句第 2章 Matlab语言程序设计第 2章 Matlab语言程序设计多项选择
>> No=input('Please input your choice! ');
Please input your choice! 1
>> switch No
case 0
disp('return to main menu');
case 1
disp('She is a girl');
case 2
disp('He is a boy');
otherwise
disp('I can''t determine')
end
She is a girl
c) 循环结构
while 语句,
for语句,
for 变量 =初值:增量:结束值程序模块;
end
第 2章 Matlab语言程序设计
>> sum=0;
>> i=0;
>> while(i<=100)
sum=sum+1;
i=i+1;
end
>> sum
sum =
14196774
举例,
第 2章 Matlab语言程序设计
>> for I=1:10
A(I)=1/(I+1) ;
end
>> A
A =
Columns 1 through 7
0.5000 0.3333 0.2500 0.2000 0.1667
0.1429 0.1250
Columns 8 through 10
0.1111 0.1000 0.0909
break语句 循环结构 continue 语句 循环结构第 2章 Matlab语言程序设计
d) 其它与流程控制有关的语句
if if
pause 指令 使程序运行停止,等待用户按任意键继续;
input 指令 提示用户从键盘输入数值、字符串或表达式,并接受输入;
disp指令 在屏幕上显示字符串 ;
echo on指令 显示其后所有执行文件的指令;
echo off指令 关闭其后所有执行文件的指令显示。
第 2章 Matlab语言程序设计
5、数据 文件的操作第 2章 Matlab语言程序设计数据文件一般存放在磁盘介质上,用文件名标识,Matlab
系统对文件名没有特殊要求。数据文件的格式有两种形式:
一是二进制格式文件,二是 ASCII文本文件。
a) 数据文件的打开和关闭用 fopen函数打开数据文件:
Fid= fopen(filename,permission);
Fid为文件句柄,filename 为文件名。 permission 为文件打开格式,可以是:‘ r‘,?w‘,?a‘,?r+‘,?w+‘,?a+‘。
用 fclose函数关闭数据文件:
Sta=fclose(Fid);
b) 数据文件的读写用 fread读二进制数据文件:
[A,COUNT]=fread(Fid,size,precision)
其中,A为数据矩阵,用于存放读取的数据; COUNT
返所读取的数据元素个数,Fid 为文件句柄,size为读取范围,是可选项,若不选用则读取整个文件内容,
precision用于控制所读数据的精度格式。
例,Fid=fopen(?std.dat‘,‘r‘);
A=fread(Fid,100,‘long‘);
fclose(Fid);
第 2章 Matlab语言程序设计第 2章 Matlab语言程序设计用 fwrite写二进制文件:
COUNT=fwrite(Fid,A,precision)
例,Fid=fopen(?test.dat‘,?w‘);
cnt=fwrite(Fid,A,?float‘)
fclose(Fid);
用 fscanf读取 ASCII数据文件:
[A,COUNT]=fscanf(Fid,format,size)
format用以控制读取的数据格式,由%加上格式符组成,
常见的格式符有,d,i,o,u,x,e,f,s,c。
例,fscanf(Fid,?%s‘);
fscant(Fid,?%6.2f‘);
fscanf(Fid,―%5d‘);
用 fprint写 ASCII文本数据到文件或屏幕上:
COUNT=fprintf(Fid,format,A,…)
例,x=0:0.1:1;
y=exp(x)
Fid=fopen('exp.txt','w')
fprintf(Fid,'%6.2f,%12.8f\n',x,y)
fclose(Fid);
第 2章 Matlab语言程序设计
c) 从磁盘中直接读写内存变量
load将数据文件中的数据直接为 workspace中变量
load filename –ascii
load filename
save将 workspace中变量直接写到数据文件中
save filename A,… -ascii
save filename A,…
第 2章 Matlab语言程序设计第 2章 Matlab语言程序设计
6) M文件编程
a) 命令式文件如果要输入较多的命令,而且要经常对这些命令重复输入,利用命令文件将显得比较简单方便。
建立命令文件的方法根简单,就是将要输入的所有指令按顺序放到一个扩展名为,,m‖的文本文件中,每次运行时只要输入 M文件的文件名即可。
在命令文件运行过程中产生的所有变量均是全局变量 。
第 2章 Matlab语言程序设计例:编一个画宝石项链的程序
echo on
t=(0:0.02:2)*pi;
x=sin(t);
y=cos(t);
z=cos(2*t);
plot3(x,y,z,'b-',x,y,z,'bd')
view([-80,60])
box on
legend(?链子’,‘宝石’ );
存入文件 necklace.m
b) 函数式文件函数文件和命令文件的区别在于:命令文件的变量在文件执行完程序后仍然保留在内存中,而函数文件内定义的变量为 内部变量,仅在函数文件内部起作用。
函数 M文件通常由以下五部分组成:
函数定义行 ;
函数帮助行;
在线函数帮助文件 ;
注释 ;
函数体 。
第 2章 Matlab语言程序设计第 2章 Matlab语言程序设计例:计算第 n个 Fibonnaci斐波纳契数 (一种整数数列,
其中每数等于前面两数之和 )
function f=fibfun(n) 函数定义行 n—函数输入; f—函数输出; fibfun—函数名。
% FIBFUN For calculating Fibonacci numbers,函数帮助行
% Incidengtally,the name fibonacci comes from
% Filius Bonassi,or ―son of Bonassus‖ 在线函数帮助文件
% fibfun.m
if n>2
f=fibfun(n-1)+fibfun(n-2); 函数体
else
f=1;
end
注意,文件名必须与函数名相同执行:
fibfun(17),help fibfun,lookfor fibfun
第 2章 Matlab语言程序设计
7,M文件调试语法错误 和 运行错误对于 语法错误,Matlab通常能在编译和运行时立即发现,
给出相应的错误原因以及所在的行号,并终止其运行。
对于 运行错误,Matlab提供了 M文件的调试 (Debug)工具。
对于 命令文件,可以直接在文件编辑器中设置断点,用调试工具(菜单或工具栏)分步执行,并在工作空间中检查每个变量的值。(以 necklace.m为例)
对于 函数文件,可以先在文件编辑器中设置断点,再到命令行状态执行函数,然后再回到文件编辑器中进行观察和调试。(以 fibfun.m为例)
( 1)利用 for 循环求 1!+2!+3!…+20! 的值。
( 2)用 while 循环求 1~ 200 之间的整数之和。
( 3)编写一个 M 文件,画出下列分段函数所表示的曲面。
( 4)编写一个求圆的面积的函数文件。
( 5)编写一个求圆的面积的命令文件上机练习( 3)
15457.0
117575.0
154.0
),(
5.175.375.0
6
5.175.375.0
22
22
22
yxe
yxe
yxe
yxp
yyx
yx
yyx