3.1 顺序结构
文件的建立:
文件分为:
脚本文件:是可在命令行窗口直接执行的文件,也叫命令文件。
函数文件:是定义一个函数,不能直接执行,而必须以函数调用的方式来调用它。
% 建立脚本文件f1.m。
A=[1,2,3;4,5,6];
B=[1,2;3,4;5,6];
C=A*B
% 在命令行窗口运行脚本文件。
>> f1
C =
22 28
49 64
% 建立函数文件f2.m。
function C=f2(A,B)
C=A*B;
% 在命令行窗口调用函数文件。
>> A=[1,2,3;4,5,6];
>> B=[1,2;3,4;5,6];
>> C=f2(A,B)
C =
22 28
49 64
数据操作:
数据的输入:
- A=input(提示信息,选项)
数据的输出:
- disp(输出项)
>> A=input('请输入变量A的值:');
请输入变量A的值:100
>> disp(A)
100
3.2 选择结构
if 语句的选择结构:
例:输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应数的平方,若为其他字符则原样输出。(在脚本文件中编写)
- lower 函数:将字符或字符串转化为小写。
- upper 函数:将字符或字符串转化为大写。
- str2double 函数:将字符数组或字符串标量转换为数值矩阵。
c=input('请输入一个字符:','s');
if c>='A' && c<='Z'
disp(lower(c))
elseif c>='a' && c<='z'
disp(upper(c))
elseif c>='0' && c<='9'
disp(str2double(c)^2)
else
disp(c)
end
switch语句的选择结构:
例:PM2.5 是指大气中直径小于或等于2.5微米的可入肺颗粒物,是衡量空气质量的重要指标。假定空气质量等级以 PM2.5 数值划分为6级。 PM2.5 数值在[0,35)空气质量为优,[35,75)为良,[75,115)为轻度污染,[115,150)为中度污染,[150,250)为重度污染,大于等于250为严重污染。编写程序,输入PM2.5数值,输出空气质量等级。
- num2cell 函数:将数值矩阵转化为单元矩阵。
g=input('请输入PM2.5值:');
switch fix(g)
case num2cell(0:34)
disp('空气质量优');
case num2cell(35:74)
disp('空气质量良好');
case num2cell(75:114)
disp('空气质量轻度污染');
case num2cell(115:149)
disp('空气质量中度污染');
case num2cell(150:249)
disp('空气质量重度污染');
otherwise
disp('空气质量严重污染');
end
3.3 循环结构
for语句的循环结构:
格式:
for 循环变量 = 初值:步长:终值
循环体语句
end
例:计算10以内的奇数的和
% 建立脚本文件f.m。
sum = 0;
for i=1:2:10 % 如果步长为 1 ,可以省略。
sum = sum + i;
end
sum
% 在命令行窗口运行脚本文件。
>> f
sum =
25
while语句的循环结构:
while语句:
例:从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。
msum=0;
n=0;
x=input('Enter a number (end in 0):');
while x~=0
msum=msum+x;
n=n+1;
x=input('Enter a number (end in 0):');
end
if n>0
msum
mean=msum/n
end
break语句和continue语句:
break:用来跳出循环体,结束整个循环。
continue:用来结束本次循环,接着进行下一次是否执行循环的判断。
例:求[100,200]之间第一个能被21整除的整数。
for n=100:200
if rem(n,21)~=0
continue
end
n
break
end
3.4 函数文件的定义与调用
函数文件的基本结构:
格式:
function 输出形参表=函数名(输入形参表)
注释说明部分
函数体语句
1、函数文件名通常由函数名再加上扩展名.m组成,函数文件名与函数名也可以不相同。当函数文件名与函数名不相同时, MATLAB将忽略函数名,调用时使用函数文件名。
2、return语句表示结束函数的执行。通常,在函数文件中也可以不使用return语句,那么被调用函数执行完成后会自动返回。
例:编写函数文件,求半径为r的圆的面积和周长。
function [s,p]=fcircle(r)
s=pi*r*r;
p=2*pi*r;
函数调用:
格式:[输出实参表]=函数名(输入实参表)
% 在MATLAB命令行窗口调用前面定义的fcircle函数。
>> [s,p]=fcircle(10)
s =
314.1593
p =
62.8319
匿名函数:
格式:函数句柄变量=@(匿名函数输入参数) 匿名函数表达式
>> f=@(x,y) x^2+y^2
f =
@(x,y)x^2+y^2
>> f(3,4)
ans =
25
>> h=@sin
h =
@sin
>> h(pi/2)
ans =
1
函数的递归:
例:利用函数的递归调用,求n!。
n ! = { 1 ( n < = 1 ) n ( n − 1 ) ! ( n > 1 ) n!= \begin{cases} 1&(n<=1) \\ n(n-1)!&(n>1) \end{cases} n!={1n(n−1)!(n<=1)(n>1)
function f=fact(n)
if n<=1
f=1;
else
f=fact(n-1)*n;
end
3.5 函数参数与变量的作用域
函数参数的可调性:
nargin:输入实参的个数
nargout:输出实参的个数
% 建立函数文件test.m。
function fout=test(a,b,c)
if nargin==1
fout=a;
elseif nargin==2
fout=a+b;
elseif nargin==3
fout=(a*b*c)/2;
end
% 在命令行窗口运行函数文件。
>> fout=test(2)
fout =
2
>> fout=test(2,3,2)
fout =
6
全局变量与局部变量:
- 局部变量:在程序中只在特定过程或函数中可以访问的变量。
- 全局变量 :所有的函数都可以对它进行存取和修改。