MATLAB基础学习笔记(二)

程序流程控制

顺序结构程序

  1. 基本步骤:
  • 分析问题,确定求解问题的数学模型或方法
  • 设计算法,并画出流程图
  • 选择编程工具,根据算法编写程序
  • 调试程序,分析程序输出结果
  1. 三种基本结构:顺序、选择、循环

    程序文件拓展名:.m吧

    脚本文件(也叫命令文件)、函数文件

    1. 脚本文件

      调用: 在命令行窗口输入文件名

    2. 函数文件

      调用:直接在命令行窗口调用函数,函数文件名与函数名要一致

      工作的目录必须一致

      cd命令查询目前所在文件夹,cd E:\文件夹修改所在文件夹

  2. 文件的建立

  • 用命令按钮创建文件 新建脚本

    %建立脚本文件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
    
  • 用edit命令创建文件

    >>edit test
    %建立函数文件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
    
  1. 顺序结构

    1. 数据的输入

      A=input(提示信息,选项);

      >>A=input('请输入变量A的值:');
      
    2. 数据的输出

      disp

      >>s='ddd';
      >>disp(s)
      ddd
      >>a=[1,2,3;4,5,6;];
      >>disp(a)
        1    2    3
        4    5    6
      
  2. 程序的暂停

    pause(延迟秒数)

    若要强制中止程序:Ctrl+C

用if语句实现选择结构

  1. 单分支if语句

    if 条件

    ​ 语句组

    end

    条件结果为 标量,非零表示条件成立

    结果为矩阵,如矩阵非空,且不包含零元素,则条件成立

  2. 双分支if语句

    if 条件

    ​ 语句组1

    else

    ​ 语句组2

    end

    例 输入一个整数,若为奇数则输出其平方根,否则输出其立方根

    x=input('x=');
    if rem(x,2)==1   %可写为 rem(x,2)
    	y=sqrt(x);
    else
    	y=x^(1/3);	 %power(x,1/3)
    end
    y
    
    
  3. 多分支if语句

    elseif

    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语句实现选择结构

x=input('x=')
switch fix(x)
	case 2
		disp(111);
	case 2
		disp(222);
	case {3,4,5}
		disp(333);
	otherwise
		disp(444);
end
%输入一个英文字母,判断是否以元音字母开头
c=input('请输入一个单词:');
switch c(1)
	case{'A','E','I','O','U','a','e','i','o','u'}
		disp('以元音字母开头')
	otherwise
		disp('以辅音字母开头')
end

if findstr(c(1),'AEIOUaeiou')>0
		disp('以元音字母开头')
	else
		disp('以辅音字母开头')
end

用for语句实现循环结构

格式:

for 循环变量=表达式1:表达式2:表达式3

​ 循环体语句

end

说明

  • ​ for针对向量的每一个元素执行一次循环体
  • ​ 退出循环后,循环变量的值就是向量中最后元素值
  • ​ 向量为空时,循环体一次也不执行
%利用无穷级数展开式求Π的近似值
y=0;
g=-1;
n=input('n=');
for i=1:n
	g=-g;
	y=y+g*1/(2*i-1);
end
pai=4*y
%向量求和的方法
n=input('n=');
x=1:2:(2*n-1);
y=(-1).^(2:n+1)./x;
pai=sum(y)*4

  1. 利用定积分的近似值
a=0;
b=1;
n=input('n=');
h=(b-a)/n;
x=a:h:b;
f=sqrt(1-x.*x);
s=[];
for k=1:n;
    s1=(f(k)+f(k+1))*h/2;
    s=[s,s1];
end
pai=4*sum(s)
  1. 蒙特卡洛法计算

    s=0;
    n=input('n=')
    for i=1:n
    	x=rand(1);
    	y=rand(1);
    	if x*x+y*y<=1
    		s=s+1;
    	end
    end
    pai=s/n*4
    

for 循环变量必须是一个标量,也可以是一个列向量

while语句实现循环结构

  1. 格式: while 条件

    ​ 循环体语句

    ​ end

  2. break和continue语句

  3. 循环的嵌套

函数文件的定义与调用

  1. 函数文件的基本结构: function 输出形参表=函数名(输入形参表)

    ​ 注释说明部分

    ​ 函数体语句

    有多个形参时,用括号分隔,组成形参表。

    输出形参多于一个时,应该用方括号括起来

    函数文件名 函数名

    return 语句

  2. 调用格式

    [输出实参表]=函数名(输入实参表)

  3. 匿名函数

    函数句柄变量=@(匿名函数输入参数) 匿名函数表达式

    函数句柄变量=@函数名

    f=@(x,y)x^2+y^2
    f =
      包含以下值的 function_handle:
        @(x,y)x^2+y^2
    >> f(3,4)
    ans =
     25
    

函数的递归调用

  1. 函数的嵌套调用

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-svJzCkya-1611460693010)(E:%5C%E5%AD%A6%E4%B9%A0%5C%E5%9B%BE%E7%89%87%E7%AC%94%E8%AE%B0%5C%E5%B5%8C%E5%A5%97%E8%B0%83%E7%94%A8.png)]

  2. 递归调用:一个函数调用它自身

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0tbJnUgo-1611460693012)(E:%5C%E5%AD%A6%E4%B9%A0%5C%E5%9B%BE%E7%89%87%E7%AC%94%E8%AE%B0%5C%E9%80%92%E5%BD%92%E8%B0%83%E7%94%A8.png)]

    %函数文件
    function f=ffib(n)
    if n>2
        f=ffib(n-1)+ffib(n-2);
    else
        f=1;
    end
    %脚本文件
    F=[];
    for k=1:20
        F=[F,ffib(k)*ffib(k)];
    end
    sum(F)
    ffib(20)*ffib(21)
    

函数参数与变量的作用域

  1. 函数参数的可调性

    nargin 输入实参的个数

    nargout 输出实参的个数

    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
    
  2. 局部变量 只在特定过程或函数中可以访问的变量

  3. 全局变量 整个MTLAB工作空间中都可用

    定义格式:global 变量名

    %函数文件
    function f=wad(x,y) 
    global ALPHA BETA   %定义两个全局变量
    f=ALPHA*x+BETA*y;
    %命令行窗口
    global ALPHA BETA
    >> ALPHA =1;    %命令行窗口可直接改变全局变量的值
    >> BETA=2;
    >> s=wad(1,2)
    s =
         5
    

bc)/2;
end




2. 局部变量  只在特定过程或函数中可以访问的变量

3. 全局变量  整个MTLAB工作空间中都可用

定义格式:global   变量名

```matlab
%函数文件
function f=wad(x,y) 
global ALPHA BETA   %定义两个全局变量
f=ALPHA*x+BETA*y;
%命令行窗口
global ALPHA BETA
>> ALPHA =1;    %命令行窗口可直接改变全局变量的值
>> BETA=2;
>> s=wad(1,2)
s =
     5
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值