zoukankan      html  css  js  c++  java
  • Matlab变量、分支语句和循环语句

    一、Matlab的变量

    1、变量的命名

    Matlab的变量名由数字、字母和下划线组成,可是仅仅能由字母开头。大写和小写敏感,最大长度为63个字符。不能使用Matlab的关键字作为变量名,应当避免使用函数名作为变量名。假设变量名採用函数名。则该函数失效。

    Matlab提供了isvarname函数来验证用户指定的变量名是否为Matlab接受的合法变量名。该函数返回1或0,分别代表合法或者不合法。

    >> isvarname('_var')
    
    ans =
    
         0
    
    >> isvarname('var_123')
    
    ans =
    
         1

    2、变量的类型

    Matlab中的变量共分为三类:局部变量、全局变量和永久变量。

    局部变量不用多说,和其它的编程语言是相同的含义,局部变量存储在函数的工作空间中,当函数调用结束之后,局部变量随之被删除。

    全局变量在整个Matlab的工作空间中都有效。

    当在一个工作空间中改变该值的时候,该变量在其余空间内的值也将被改变。全局变量的声明格式例如以下:

    >> global X_val
    >> X_val=3;
    >> X_val
    
    X_val =
    
         3

    永久变量能够用persistent声明。仅仅能在M文件函数中定义和使用;改变了仅仅同意声明它的函数才干使用的规则。当声明它的函数退出时,永久变量继续保存在内存中。

    persistent a

    3、特殊变量和关键字

    特殊变量是指Matlab提前定义的具有默认意义的变量,例如以下表:

    变量 含义 变量 含义
    ans 用作结果的缺省变量名 beep 使得计算机发出“嘟嘟”声
    pi 圆周率 eps 机器零阈值,浮点精度限(2.2204*10^-16),MATLAB中的最小数
    inf 表示无穷大,如1/0 NaN 表示不定数。即结果不能确定,比如0/0
    j或i 虚数 nargin 函数的输入參数个数
    nargout 函数的输出參数个数 Realmin 可用的最小正实数
    realmax 可用的最大正实数 bitmax 可用的最大正整数(以双精度格式存储)
    varargin 可变函数的输入參数个数 varargout 可变函数的输出參数个数

    Matlab中有20个关键字。能够使用iskeyword命令来查看。

    >> reshape(iskeyword,5,4)
    
    ans = 
    
        'break'       'else'        'global'        'return'
        'case'        'elseif'      'if'            'spmd'  
        'catch'       'end'         'otherwise'     'switch'
        'classdef'    'for'         'parfor'        'try'   
        'continue'    'function'    'persistent'    'while'

    二、分支结构

    Matlab中可用的分支结构有三种,各自是if-else-end结构、switch-case结构和try-catch结构。

    1、if-else-end结构

    (1)假设可选择的运行命令组仅仅有一组,则调用以下的结构:

    if expression
       commands
    end

    (2)假设可选择的运行命令组有两组。则调用以下的结构

    if expression
       commands1 %如果条件为真则运行commands1
    else
       commands2 %如果条件为假则运行commands2
    end

    (3)假设可选择的运行命令组有n(n>2)组。则调用以下的结构

    if expression1
       commands1 %假设条件expression1为真则运行commands1
    elseif expression2
       commands2 %假设条件expression2为真则运行commands2
    ...
    else
       commandsn %假设前面的全部条件都不满足就运行最后一条
    end

    2、switch-case结构

    switch value              %value为要进行推断的标量或字符串
         case test1
               commands1      %假设value的值等于test1。运行commands1
         case test2           %假设value的值等于test2,运行commands2
               commands2
         ...
    otherwise
               commandsn      %假设全部的条件都不满足就运行这条命令
    end

    注意:case后的检測值不仅能够是一个标量值或一个字符串,还能够是一个元胞数组。假设检測是一个元胞数组,则Matlab将value与元胞数组中的每个元素都进行比較。假设有一个元素相等就觉得匹配成功,从而运行该次检測相相应的命令组。

    3、try-catch结构

    try
          command1 %命令组command1首先被运行。若正确,则catch下的命令组将不会被运行
    catch
          command2 %假设command1命令组运行出错了,那么该命令组将会被运行
    end

    假设在catch下的command2的命令组的运行过程也出错了。那么Matlab将停止运行。

    try-catch结构在程序调试场合很实用。

    三、循环结构

    1、for循环

    比如求解1+2+3+….+99+100的和

    >> sum=0;
    >> for i=1:100
    sum=sum+i;
    end
    >> sum
    
    sum =
    
            5050

    实际上for后边的i是一个数组,for循环每运行一次,i就取矩阵中的下一个值,比如:

    >> for i=[1,3,5]
    sum=sum+i;
    end
    >> sum
    
    sum =
    
         9

    2、while循环

    我们还是求上边的那个1——100的和,使用while循环。

    >> sum=0;
    >> i=1;
    >> while i<=100
    sum=sum+i;
    i=i+1;
    end
    >> sum
    
    sum =
    
            5050

    while循环和for循环的差别就是,while循环事先不知道要循环多少次,而for循环是依照之前设置好的次数来循环的。

    四、其它经常使用控制命令

    1、input和keyboard命令

    input命令将Matlab的控制权临时交给用户,等待用户通过键盘输入数值、字符串或表达式等并经回车键将输入内容传递到工作空间后,收回控制权。

    经常使用格式例如以下:

    value = input('message')
    value = input('message','s')

    命令中的message是将显示在屏幕上的字符串,对于第一种调用格式,能够输入字符串、数值等各种各样的数据。

    可是另外一种格式的,不管输入什么内容都当做字符串处理。

    keyboard命令将控制权交给键盘,用户能够由键盘输入各种合法的matlab命令。仅仅有当用户输入完毕。并键入return命令后,才收回控制权。

    input命令和keyboard命令的不同之处在于:keyboard命令同意输入随意多个Matlab命令,而input命令仅仅同意用户输入赋值给变量的数组、字符串或元胞数组等。

    2、pause命令

    pause命令的功能为控制运行文件的暂停与恢复。其调用格式例如以下:

    pause %暂停运行文件。等待用户按随意键继续
    pause(n) %在继续运行文件之前,暂停n秒

    3、lasterr和lastwarn命令

    lasterr命令能够显示matlab系统推断的最新出错原因。
    lastwarn命令能够显示matlab系统给出的最新警告程序并继续运行。

  • 相关阅读:
    一次使用布隆过滤器的经历
    从C#到Java(effective-java阅读笔记)
    从C#到Java(泛型)
    Dubbo学习-第一章
    从C#到Java(Spring拦截器HandlerInterceptor )
    从C#到Java(Aspect)
    从C#到Java(SpringBoot入门)
    从C#到Java(lambda比较)
    Redis添加List
    Three.js学习(相机,场景,渲染,形状)
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7306415.html
Copyright © 2011-2022 走看看