Matlab基础(六)——程序设计

一、M文件

1.M文件的类型

用MATLAB语言编写的程序,称为M文件。 M文件可以根据调用方式的不同分为两类:

  • 脚本文件(命令文件) (Script File)
  • 函数文件(Function File)

①脚本文件

将原本要在MATLAB环境下直接输入的多条语句,存放为.m后缀的文件,在命令行键入文件名,替代多条语句,一次执行成批命令。

②函数文件

以固定格式书写的程序代码,第一行是函数定义行,有输入参数和输出参数,由function引导;函数中的变量一般是局部变量,也可以声明全局变量;

  • 函数m文件的格式

    function  [ 输出形参 ] = 函数名[ 输入形参 ]
    %注释
    内容
    

    注意:函数文件名要和主函数的名字一致
    输入形参以圆括号()表示,输出形参以方括号[]表示(注:输出形参为一个的时候可以不用[])
    如果a=function[x,y,z] ,则默认输出第一个输出形参
    可以[~,b]=function[x,y,z],来输出第二个输出形参
    即:通过~符号,忽略函数返回的某个参数。

  • 函数m文件的调用格式
    [输出实参表]=函数名(输入实参表)

  • 函数变量
    函数内部产生的是局部变量,除非特殊说明为全局变量,局部变量会在函数调用完毕后随函数的结束而清除。
    声明一个变量为全局变量:global 变量1,变量2

    function [output] = average(inputArg)
    %AVERAGE 向量元素求均值
    %   单纯求均值,为示例子函数而写
    N=length(inputArg);
    output=GGBOND(inputArg,N)
    end
    
    function hh=GGBOND(X,N)		
    hh=sum(X)/N;
    end
    
    >> x=[1 2 3 4 5 6];
    >> average(x)
    output =
    3.5000
    
    ans =
    3.5000
    

③函数句柄

函数句柄的作用是将一个函数封装成一个变量,使其能够像其它变量一样在程序的不同部分传递。
语法:@函数名fun1 = @sin;

二、Matlab程序的控制语句

1.顺序语句

自不待言。

2.选择结构

if 语句

  • 单分支if语句
   if   condition
        语句组
   end
  • 双分支if语句
   if   condition
        语句组1
   else
   		语句组2
   end
  • 多分支if语句
  if   条件1
       语句组1
  elseif   条件2
  	   语句组2
  	   ……
  elseif   条件m-1
  	   语句组m-1
  else
  	   语句组m
  end

switch语句

switch 表达式
case 表达式值1
语句组1
case 表达式值2
语句组2
……
case 表达式值m-1
语句组m-1
otherwise
语句组m
end

当表达式的值等于表达式m-1的值时,执行语句组m-1;
当表达式的值不等于case所列的表达式的值时,执行语句组m;
当任意一个分支的语句执行完后,直接执行switch语句的下一句;

try语句

try 
	语句组1
catch
	语句组2
end

try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。

3.循环结构

①for语句

  • 第一种表示方式
 for 循环变量 = 初值:步长:终值
 	 循环体语句
 end

eg.一个求水仙花数的示例

for m=100:999
m1=floor(m/100); %求m的百位数字
m2=rem(floor(m/10),10); %求m的十位数字
m3=rem(m,10); %求m的个位数字 rem求余数
if m==m1*m1*m1+m2*m2*m2+m3*m3*m3
disp(m) %显示变量
end
end

输出:
153
370
371
407

  • 第二种表达方式
  for 循环变量 = 矩阵表达式
  	 循环体语句
  end

执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。

for v = [1,2,3;5,6,7;8,9,10]
   disp(v)
end

输出

     1
     5
     8

     2
     6
     9

     3
     7
    10

求矩阵每行元素之和

s=0;
a=[1,2,3;5,6,7;8,9,10];
for k=a
s=s+k;
end
s;

k(1)=[1 5 8];
k(2)=[2 6 9];
k(3)=[3 7 10];

②while 语句

while (条件)
		循环体语句
end

4.交互语句

(1)输入输出控制命令(input)

R=input('xxx'):在屏幕上显示提示信息xxx,等待输入数据并赋值给R

keyboard:停止执行程序,将控制权交给键盘,等待用户输入并在命令提示符前显示K以示区别

(2)等待用户响应命令(pause)

pause:终止当前运行的M文件,等待用户按任意键后继续运行。
pause(n):在屏幕上显示提示信息xxx,等待n秒继续运行。
pause on:允许以后的运行过程中使用pause命令。
pause off:不允许以后的运行过程中使用pause命令

(3)中断、继续、转向命令

break就是直接跳出该层循环
continue就是直接进入该层循环的下一次迭代
return就是直接退出程序或函数返回了
大概的关系如下 return>break>continue

验证输入的自然数是不是素数:

m=input('请输入数字')
k=sqrt(m);
ii=2;
while ii
ii
if rem(m,ii)==0
break
else
ii=ii+1;
end
if ii>k
'输入的是素数'
return
end
end
'输入的不是素数'
  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值