Matlab编程(二)

M文件

M 文件根据调用方式的不同可以分为两类
Script:脚本文件/命令文件
直接输入文件名即可运行

Function:函数文件
供其它M文件调用,通常带输入参数和输出参数

函数文件

函数文件由 function 语句引导
function 输出形参列表=函数名(输入形参列表)
% 注释说明部分(可选)
函数体语句(必须)
第一行为引导行,表示该 M文件是函数文件
函数名的命名规则与变量名相同 ( 必须以字母开头 )
当输出形参多于一个时,用方括号括起来
函数必须是一个单独的 M文件
函数文件名必须与函数名一致
以百分号开始的语句为注释语句

举例:
在这里插入图片描述

函数调用

函数调用的一般格式:
输出实参列表=函数名(输入实参列表)
函数调用时,实参的顺序应与函数定义时的形参的顺序一致。
函数可以嵌套调用,即一个函数可以被其它函数调用,甚至可以被它自身调用,此时称为递归调用。
函数所传递的参数具有可调性,Matlab 用两个永久变量 nargin 和 nargout 分别记录调用该函数时的输入实参和输出实参的个数。只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。

递归函数举例:
在这里插入图片描述参数的可调性举例:
在这里插入图片描述

M文件控制流

程序控制结构有三种:顺序结构、选择结构和循环结构。任何复杂的程序都由这三种基本结构组成

数据输入Input

A=input('Please input A:')

其中提示信息是字符串
该命令要求用户输入A的值(数或者字符串)
如果是输入字符串,也可以使用一下的方法

A=input('what''s your name?','s')

数据输出disp

disp(x)

数据输出fprintf

fprintf(fid,format,variables)

fid为文件句柄,若缺省,则将变量的值输出到屏幕上
format用来指定数据输出时采用的格式,常见的有

%d整数
%e实数(采用科学计数法的方式)
%f实数(采用浮点数形式)
%g由系统自动选取上述两种格式之一
%s输出字符串

format中还可以使用一些特殊格式,如

\n换行
\b退格
\反斜杠
%%百分号
a='hello';b=2.4;c=100*pi;
fprintf('a=%s,b=%f,c=%e\n',a,b,c)

在这里插入图片描述

程序的暂停

pause或者pause(n)

其中n是延迟时间,以秒为单位
若缺省,则将暂停程序,知道用户按任意键后继续

pause on   屏蔽程序中所有pause的作用
pause off 打开pause的作用

选择结构

选择结构是根据给定的条件或不成立,分别执行不同的语句,Matlab用于实现选择结构的语句有if和switch

if条件语句

if expression(条件)
   statements(语句组)
end

双分支结构

if expression (条件)
   statements1(语句组1)
else
    statement2(语句组2)
end

多分支结构

if expression1 (条件1)
   statements1(语句组1)
elseif expression2 (条件2)
   statements2(语句组2)
 ... ... 
elseif expressionm (条件m)
   statementsm(语句组m)
else
   statements(语句组)
end

例子

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);
else
  disp('不能构成一个三角形')
end

在这里插入图片描述

switch语句

switch expression  (表达式)
	case value1 (表达式1)
			statement1 (语句组1)
	case value2 (表达式2)
			statement2 (语句组2)
	......
	case valuem(表达式m)
			statementm(语句组m)
	otherwise
			statement(语句组)
end

在这里插入图片描述
Matlab 首先计算 expression 的值,然后将它依次与各个 case 指令后的检测值进行比较,当比较结果为真时,就执行相应的语句组,然后跳出 switch 结构。
如果所有的比较结果都为假,则执行 otherwise 后面的语句组,然后跳出 switch 结构。
otherwise 指令可以不出现
switch 后面的表达式 expression 的值可以是一个标量或字符串。

循环结构

按照给定的条件,重复执行指定的语句,Matlab用于实现循环结构的语句有for语句和while语句

for循环

for variable=expression
	statement(循环体)
end

例子

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

while循环

while expression (条件)
		statements(循环体)
end

例子

在这里插入图片描述从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。

循环的嵌套

若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。求[1,500]之间的全部完数

for m=1:500
	s=0;
	for k=1:m/2
		if rem(m,k)==0
			s=s+k;
		end
	end
	if m==s
		disp(m);
	end
end

求[100,1000]以内的全部素数

n=0;
for m=100:1000
	flag=1;
	j=m/2;
	i=2;
	while i<=j &flag
		if rem(m,i)==0
			flag=0;
		end
		i=i+1;
	end
	if flag
		n=n+1;
		prime(n)=m;
	end
end

其他控制语句

break语句用于终止循环的执行,即跳出内层循环
continue 语句用于结束本次循环,进行下一次循环
break 和 continue 一般与 if 语句配合使用
return 语句用于退出正在运行的脚本或函数,通常用在函数文件中

try语句

try
statements 1(语句组1)
catch
statements 2(语句组2)
end
try的作用是尝试执行一些语句, 执行过程中如果出错, 则执行catch后面的语句,再出错则执行终止。
try后面的语句没有出错,就不执行catch后面的语句。
可以使用 lasterr 显示出错原因
在这里插入图片描述

例子

在这里插入图片描述

n=input('Please enter positive integer n:');
while n<=0|fix(n)~=n
    n=input('Please enter positive integer n:');
end
nt=n;
  while n>1
    if rem(n,2)==0
       n=n/2;
    else
       n=3*n+1;
    end
    fprintf('\n n=%d',n);
  end
  fprintf('\n n=%d is not we need! \n', nt);

在这里插入图片描述

num = rand(1)*100;%产生(0,100)随机数,服从均匀分布 
num = ceil(num);%向上取最近的整数,落在[1,100]之间
i=1; flag=0; %i记录猜测次数,flag记录是否猜对
while i<=7 
   a=input('请输入一个1-100的整数'); 
   if a<num 
      disp('LOW'); 
   elseif a>num 
      disp('HIGH'); 
   else 
      disp('YOU WIN'); flag=1; break; 
   end 
   i=i+1; 
end
if flag==0 
   disp('YOU LOST');
end
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值