一、自定义函数
格式:函数句柄 = @(自变量列表)函数表达式
例1 定义函数,并计算f(x)在点x=-2,1,2.5,3,5.2的值。
f=@(x)x.^2+3*x+5 x=[-2,1,2.5,3,5.2] y1=f(x)
二、 m-文件函数(子程序) 格式:function [y1,y2]=ff(x1,x2) …… y1=… y2=… 输入变量:x1,x2,输出变量:y1,y2 注:输入、输出变量可以为1个或多个。
例3 建立函数,实现输入矩阵x,输出x的最大元素与最小元素以及该矩阵的秩。然后调用该函数。
function [M,m,r]=fun303(x)
r=rank(x);
b=x(1:end);
y=sort(b);
M=y(end);
m=y(1);
流程控制语句
一、分支结构
1. if条件语句
2. switch 分值选择语句
例4 自定义函数, 对数组x做如下处理: 记数组x所有元素和为s, (1)若s除以5余数为1, 求出x中所有奇数的和。 (2)若s除以5余数为4, 求出x中所有偶数的和。 (3)其余情况求出x中 最大值与最小值的差。
function y=ff(x)
switch mod(sum(x),5);
case 1
t=mod(x,2); y=sum(t.*x);
case 4
t=1-mod(x,2); y=sum(t.*x);
otherwise
y=max(x)-min(x);% t=sort(x);
y=t(end)-t(1);
end
x=[2,-4,3,6,7,11]
y=ff(x)
二、循环结构
1. for 循环语句
若数组为行向量,依次取数组元素执行循环体。 若数组为矩阵,依次取矩阵的列执行循环体
例5 随机生成15个0~99的整数构成数组x,并构造下列数组:
(1)将数组x的第偶数个元素平方,其余元素不变。
(2)将数组x的第偶数个元素乘以2,其余元素置0。
x=floor(rand(1,15)*100);
y1=x;
y2=zeros(1,15);
for i=2:2:14
y1(i)=x(i)^2;
y2(i)=2*x(i);
end
[x;y1;y2]
例6 数组x=(8,3,5,-1,6,10,7,2,9,11),求出其中所有除以5余1的元素之和
以及所有除以5余4的元素之和.
x=[8,3,5,-1,6,10,7,2,9,11];
s1=0; s2=0;
for m=x
switch mod(m,5)
case 1
s1=s1+m;
case 4
s2=s2+m;
end
end
s1,s2
不用循环完成
x=[8,3,5,-1,6,10,7,2,9,11];
i1=find(mod(x,5)==1);
s1=sum(x(i1))
i2=find(mod(x,5)==4);
s2=sum(x(i2))
2. while-end 循环语句
注:表达式一般是由逻辑运算和关系运算组成的表达式, 表达式的值非零继续循环,表达式值为0终止循环。
例8 记三位正整数x的
个位为a,十位为b,百位为c
求出满足ab-2c=4a+b(c+2)的
第一个三位数。
N=100; m=1;
while m
a=mod(N,10);
b=mod((N-a)/10,10);
c=(N-a-10*b)/100;
if a*b-2*c==4*a+b*(c+2)
m=0;
N1=N;
end
N=N+1;
end
N1
三、 程序的流程控制命令:
continue 终止一次循环 break 结束循环
例9 在20-100的整数中,
找出不能被2或3或5或7
整除的数
clear,clc
i=1;
for n=20:100
if mod(n,2)==0|mod(n,3)==0
|mod(n,5)==0|mod(n,7)==0
continue
else
X(i)=n; i=i+1;
end
end
X