matlab第4章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
被调用时的输入输出参数个数,从而决定函数如何进行处理。
【例11】 nargin用法示例
函数文件examp.m:
function fout=examp(a,b,c)
if nargin= =1 fout=a;
elseif nargin= =2 fout=a+b;
elseif nargin= =3 fout=(a*b*c)/2;
[gam,the]=tran(x,y);
gam
the 【例10】利用函数的递归调用,求n!。
function f = factor(n)
if n<=1
f=1;
else
f=factor(n-1)*n;
end return;
%返回
在命令文件 main2.m 中调用函数文件factor.m:
for i=1:10
【例8】 编写函数文件求小于任意自然数n的Fibonacci数列各项。
function f = ffib(n) % 用于求Fibonacci数列的函数文件
f=[1,1];
% f(1)=1, f(2)=1
i=1;
while f(i)+f(i+1)<n
f(i+2)=f(i)+f(i+1);
i=i+1;
end 【例9】 利用函数文件,实现直角坐标(x,y)与极坐标(γ,θ)之间的转换。
函数文件tran.m:
function [gama, theta]=tran(x, y)
gama=sqrt(x*x+y*y);
theta=atan(y/x); 调用tran.m的命令文件main1.m:
x=input('Please input x=:');
y=input('Please input y=:');
for j=1:4 if rem(k(j),2)~=0 s=s+k(j); end
end end s
max(x) mean(x) median(x) min(x) std(x) prod(x) sum(x) cumsum(x) cumprod(x) roots(A) poly(x) polyval(A,x) conv(A,B) deconv(A,B)
else disp('不能构成一个三角形。')
end
运行:
请输入三角形的三条边:[4 5 6] 9.9216
2. switch语句-分支语句 switch语句根据变量或表达式的取值不同,分别执行多种不同的语句。 其具体格式为:
【例4】 根据变量 num 的值来决定显示的内容。 num=input('请输入一个数');
end x x=
i=1:n x(i)=i.^2;
% i=1:1:n
1 4 9 16 25 36 49 64 81 100 【例6】利用while循环,求解使n!达到100位数的第一个n是多少?
n=1; while prod(1:n)<1e100
n=n+1; end n
3. 循环的嵌套 如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多
end 4.4 数据的输入输出
数据的输入方式
•
键盘直接输入(少量数据)
•
用M文件输入数据(大量数据)--在命令窗口运行该文件
•
从数据文件装载数据
--利用相应命令或数据输入向导
•
利用MATLAB底层I/O命令读取数据(fopen、fscanf、fread)
.mat 二进制数据文件 标准的Matlab数据文件 ,用load或save命令进行读入与存储。
从形式上看,函数文件与命令文件的区别在于:函数文件以function开头,而命令文 件则没有。
从变量的存储看:命令文件的变量在文件执行完成后保留在工作空间中,而函数文
件内定义的变量只在函数文件内部起作用,当函数文件执行完后,这些内部变量将被清除。
2.函数调用 函数调用的一般格式是:
[输出实参表]=函数名(输入实参表)
.txt .dat等ASCII码数据文件 用load或save命令进行读入与存储。
.bmp .jpg .tif等图像文件 用imread和imwrite命令进行读入与存储。
.wav声音文件 用wavread和wavwrite命令进行读入与存储。
还有其它的数据文件
数据的输出
在MATLAB中,全局变量用命令global定义。函数文件的内部变量是局部的,与其他 函数文件及MATLAB工作空间相互隔离。但是,如果在若干函数中,都把某一变量定义为全局 变量,那么这些函数将公用这一个变量。全局变量的作用域是整个MATLAB工作空间,即全程 有效。所有的函数都可以对它进行存取和修改。因此,定义全局变量是函数间传递信息的一种 手段。
循环体语句
end 注:其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终 值。步长为1时,表达式2可以省略。
2. while语句
格式为: while
end
表达式 循环体语句
只要表达式的值非零,循环体就重复执行。直到表达式的值为零时停止。
【例5】对1~10的数求平方
n=10; for
求多项式的根
poly(A)
建立多项式
polyval(A,x) 求多项式的值
conv(A,B) 求多项式的乘积
deconv(A,B)求多项式的商和余数多项式
4.1 M文件 用MATLAB语言编写的程序,称为M文件。 M文件的扩展名是 ‘ .m’ M文件有两类:命令文件和函数文件。
建立M文件以及运行M文件的步骤及方法 4.2 程序结构及实现
fac(i)=factor(i);
end
fac 3 .函数所传递参数的可调性
MATLAB在函数调用上有一个与众不同之处:函数所传递参数数目的可调性。凭借这一
点,一个函数可完成多种功能。
在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入
实参和输出实参的个数。只要在函数文件中包含这两个变量,就可以准确地知道该函数文件
结构化程序的三种基本结构:
赋值语句 输入语句(input函数) 输出语句(disp函数)
•
赋值语句:
格式:变量名=表达式
2. 输入语句:调用input函数
input函数的功能:用于向计算机输入一个数据。
调用格式: 变量名=input(提示信息,选项);
注:选项‘s’ ,允许用户输入一个字符串。
3. 输出语句:调用disp函数
输出为: s= 5 习题
1. 输入20个数,求其中最大数和最小数。要求分别用循环结构和调用MATLAB的max函数、min 函数来实现。 2. 求Fibonacci数列
(1)大于4000的最小项。 (2)5000之内的项数。
3. 写出下列程序的输出结果: s=0;
a=[12,13,14;15,16,17;18,19,20;21,22,23]; for k=a
求x各列的最大元素 求x各列的平均值 求x各列的中值
求x各列的最小元素 求x各列元素的标准差 求x各列元素之积 求x各列元素之和 求x各列元素累计和 求x各列元素累计积 求多项式的根 建立多项式 求多项式的值 求多项式的乘积 求多项式的商和余数多项式
elseif 条件2 语句组2
…… elseif 条件m 语句组m
else 语句组m+1
end 【例3】 输入三角形的三条边,求面积。要求判断三条边是否能构成一个三角形。
a=input('请输入三角形的三条边:');
if a(1)+a(2)>a(3) & a(1)+a(3)>a(2) & a(2)+a(3)>a(1) p=(a(1)+a(2)+a(3))/2; s=sqrt(p*(p-a(1))*(p-a(2))*(p-a(3))); disp(s);
if rem(m,i)==0 flag=0;
end i=i+1;
end %while循环结束
4.3 函数文件 函数文件是另一种形式的M文件,每一个函数文件都定义一个函数。MATLAB提供
的标准函数大部分都是由函数文件定义的。 从使用的角度看,函数是一个“黑箱”,把一些数据送进去,经加工处理,把结果
送出来。
switch num case -1 disp('I am a teacher.'); case 0 disp('I am a student.'); case 1 disp('You are a teacher.'); otherwise disp('You are a student.');
end (三)循环结构的实现 Matlab提供两种实现循环结构的语句:for语句和while语句。 1. for语句: 格式: for 循环变量 = 表达式1 : 表达式2 : 表达式3
重循环结构。 多重循环的嵌套层数可以是任意的。可以按照嵌套层数,分别叫做二重循环、三
重循环等。处于内部的循环叫作内循环,处于外部的循环叫作外循环。 【例7】求[100,1000]以内的全部素数。
n=0; for m=100:1000
flag=1; i=2; j=m-1; while i<=j & flag
disp函数的功能:在命令窗口输出数据。
调用格式:
disp(输出项)
注:输出项可以是字符串或矩阵。
【例2】 建立一个命令文件将变量a,b的值互换。
(二)选择结构的实现 实现选择结构的语句有if语句和switch语句。
1. if语句-条件语句 格式一: if 条件 语句组
end
格式三: if 条件1 语句组1
max(x)
求x各列的最大元素
mean(x)
求x各列的平均值
median(x)
求x各列的中值
min(x)
求x各列的最小元素
std(x)
求x各列元素的标准差
prod(x)
求x各列元素之积
sum(x)
求x各列元素之和
cumsum(x)
求x各列元素ቤተ መጻሕፍቲ ባይዱ计和
cumprod(x)
求x各列元素累计积
roots(A)
【例12】 全局变量应用示例先建立函数文件wadd.m,该函数将输入的参数加权相加。 function f=wadd(x,y) % add two variable global ALPHA BETA f=ALPHA*x+BETA*y;
在命令窗口中输入:
global ALPHA BETA ALPHA=1; BETA=2; s=wadd(1,2)