M文件

1. 脚本文件

  • Script is a file containing a series of commands
  • Scripts need to be saved to a <file>.m file before they can be run
  • Matlab工具库中有大量的预定义M文件,可以用what命令,列出有用户定义和在Matlab中存放的M文件
  • 脚本可以运行工作空间中存在的数据,或创建新数据来运行

2. 函数文件

  • 概念

    • M文件的第一个可执行语句以Function开始,则该文件为函数文件,每一个函数文件都定义一个函数
    • 脚本文件和函数文件区别
      • 脚本文件的变量为工作空间的变量,在文件执行完成后保留在工作空间
      • 函数文件内定义的变量为局部变量,只在函数文件内部起作用,函数文件执行完后,内部变量将被清除
  • 函数文件结构
    • 函数定义行

      • 关键词 Function,定义函数名(必须以字母开头)、输入参数和输出参数,也可以没有输出参数
      • 函数名要和文件名相同,当两者不一致时,Matlab会忽视函数名,以文件名为准
      • 格式:function [x, y, z] = sphere(theta, phi, rho)
    • H1行
      • 帮助文本的第一行,是函数定义行下的第一个注释行,供lookfor查询时使用
    • 帮助文本
      • 在函数定义行后面,供help命令查询使用
    • 函数体
      • 包含用于完成函数功能的语句,这些语句可以是调用函数、流程控制、交互式输入输出、计算、赋值、注释和空行
    • 注释
  • 匿名函数
    • 匿名函数没有函数名,也不是函数M文件,只包含一个表达式和输入输出参数
    • 格式:f = @(input1, input2, _) expression
      • f 为创建的函数句柄,间接访问函数
      • Fxy = @(x, y) x.^y + 3*x*y
      • F(2,5); ans = 62
  • 子函数(SubFunction)
    • 函数M文件中,第一个函数未主函数,其他函数为子函数。主函数位置不能变,子函数排列顺序可以任意改变
    • 文件名应与主函数名相同,外部程序只能调用主函数
    • 子函数只能被处于同一M文件中的主函数或其他子函数调用
    • 函数调用时,子函数的优先级仅次于Matlab内置函数
    • 同一M文件的主函数、子函数工作区彼此独立,各个函数间的信息传递可以通过输入输出变量、全局变量实现。
    • help、lookfor等帮助指令不能显示M文件中子函数的任何信息
  • 重载函数
    • 用于处理功能类似但功能属性不同的函数,比如变量类型不同
  • eval 函数:与文本变量一起使用,用于求表达式的值或执行包含文本字符串的语句

3. Tips

  • 注释

    • 注释符:%
    • 快捷键:Ctrl + R,注释;Ctrl + T,取消注释
  • 节(section)
    • 符号:%%
  • 智能缩进
    • 右键 -> 智能缩进
    • 快捷键:Ctrl + I
  • M文件开头命令
    • clear all - remove all previous variable
    • close all
    • clc
  • 不想输出时,语句后加分号 :
  • 一行写不下时,用省略号 ...
  • 终止程序:Control + C

控制流程(Control Flow)

1. 顺序结构

  • Matlab中最基本的结构,按先后顺序执行
  • 输入、计算、输出

2. if - else - end分支结构

if condition1

  statement1

elseif condition2

  statement2

else

  statement3

end

3. switch - case结构

switch expression

  case value1

    statement1

  case value2

    statement2

  .

  .

  otherwise

    statement

end

4. try - catch

try

  command1  %command1总是首先被执行。若正确,执行完成后结束此结构

catch

  command2 %command1执行发生错误时,执行command2

end

5. for循环

for variable = start : increment : end

  commands

end

6. while循环

  • while 和 for 循环的区别在于,while 循环的循环体被执行的次数是不确定的,而 for 循环是确定的
  • 若 while 指令后的表达式为空数组,则默认值为假,直接结束循环
while expression

  statement

end

7. 其他指令

  • return

    • 当被调用函数执行完成后,Matlab自动将控制权转回主函数或Commands窗口
  • input
    • 用户通过键盘输入
    • value = input('message')
  • pause
    • 用于控制执行文件的暂停与恢复
    • pause,暂停执行文件,等待用户按任意键继续
    • pause(n),在继续执行文件前,暂停n秒
  • continue
    • 在嵌套循环中,continue把控制传给下一个 for 或 while 循环所嵌套的迭代
  • break
    • 对for循环或while循环结构的终止
  • error
    • error('message'),显示出错信息message,终止程序
  • warning
    • warning('message'),显示警告信息message,继续运行程序

请使用手机"扫一扫"x

Matlab 编程的更多相关文章

  1. MATLAB 编程风格指南及注意事项

    MATLAB编程风格指南Richard Johnson 著Genial 译MATLAB 编程风格指南Richard JohnsonVersion 1.5,Oct. 2002版权: Datatool 所 ...

  2. 【Matlab编程】哈夫曼编码的Matlab实现

    在前年暑假的时候,用C实现了哈夫曼编译码的功能,见文章<哈夫曼树及编译码>.不过在通信仿真中,经常要使用到Matlab编程,所以为了方便起见,这里用Matlab实现的哈夫曼编码的功能.至于 ...

  3. 一些matlab教程资源收藏,使用matlab编程的人还是挺多的

    Matlab教程专题资源免费下载整理合集收藏 <MATLAB从入门到精通>高清文字版[PDF] 103.9MB 简体中文 <矩阵实验室>(Mathworks.Matlab.R2 ...

  4. MATLAB编程技巧

    [摘要] MATLAB是一种科学计算语言,和C.Fortran等高级语言相类似,能方便的实现程序控制.以下介绍一点matlab编程的技巧. 嵌套计算 程序执行的速度取决于调用的子程序的个数和算法实现. ...

  5. PID各环节的意义和功能,自带PID的matlab编程实例

    这是PID的标准形式包括比例/积分/微分三部分,e为偏差 下面我们分析三个环节的作用,设:当前系统状态A,目标状态B, e=B-A,初始状态e>0 (以下是个人的理解,欢迎读者评论) 1 比例环 ...

  6. Matlab编程基础

    平台:Win7 64 bit,Matlab R2014a(8.3) “Matlab”是“Matrix Laboratory” 的缩写,中文“矩阵实验室”,是强大的数学工具.本文侧重于Matlab的编程 ...

  7. Todd's Matlab讲义第2讲:Matlab 编程

    Matlab也可以编程,可存为以.m为后缀的文件,称为M文件.M文件有两种:函数和脚本. 函数程序 点击新建图标,在打开的窗口里输入如下内容: function y = myfunc (x) y = ...

  8. 【Matlab编程】Matlab高效编程技巧

    1.默认状态下,matlab显示精度是short型,而默认的计算精度是double型,并且显示精度与计算精度没有关系. 2. 一只失明的猫的问题:注意方法! 3.给数组预分配空间是基本的高效编程准则之 ...

  9. Matlab 编程入门(一):编程基础

    上学期学了一些matlab的知识,这学期再用时竟然发现已经忘得差不多了(┬_┬) 于是决定重新开始并将它们记录下来,也方便自己以后查漏补缺! M文件编程 脚本文件 matlab有自己的命令行窗口,对于 ...

  10. Matlab编程知识点

    容易忘记的小知识点: Matlab程序首行程序: clear:close all:clc:程序运行开始最好清理下之前残留的各种数据,不然matlab可能会出错. clear(清理变量空间),close ...

随机推荐

  1. 2018.10.20 NOIP模拟 面包(数学期望)

    传送门 把方差的式子拆开. 方差=平方的期望-期望的平方. 显然只用维护点对的个数和总方案数就行了. 利用分步的思想来统计. 要统计覆盖一个矩形(x1,y1,x2,y2)(x1,y1,x2,y2)(x ...

  2. 2018.09.02 bzoj1003: [ZJOI2006]物流运输(dp+最短路转移)

    传送门 dp好题. 每一天要变更路线一定还是走最短路. 所以l~r天不变更路线的最优方案就是把l~r天所有不能走的点都删掉再求最短路.显然是可以dp的. 设f[i]表示第i天的最优花销.那么我们枚举在 ...

  3. 2018.07.25 bzoj2125: 最短路(圆方树+倍增)

    传送门 人生的第一道仙人掌. 这道题求是仙人掌上的最短路. 先建出圆方树,然后用倍增跑最短路,当lca" role="presentation" style=" ...

  4. Python学习网站

    Python Website: https://www.python.orgSource code: https://github.com/python/cpython Issue tracker: ...

  5. MemCahced 使用及常见问题说明

    前言 本文档是针对Memcached使用及常见问题的说明. 一.获取 1. MemCached 官网:http://www.memcached.org 下载:http://memcached.org/ ...

  6. noip第9课作业

    1.    打印乘法表 [问题描述] 用for循环实现输出1至9的乘法表 [样例输出] 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4 ...

  7. PHP Functions - arsort()

    <?php $characters = array('a','b','c','d','e','f'); arsort($characters); print_r($characters); /* ...

  8. 酒店订房系统:如何使用mysql来确定一个时间段内的房间都是可订的

    需要解决的问题: 假设一个用户选择了日期范围来进行订房,例如:2014-04-25至2014-04-30 ,那么现在问题就出现,你必须要确认在这个时间段内某个房间是否都是有房间的,如果没有那么当然不能 ...

  9. Android-WebViewUtils-工具类

    WebViewUtils-工具类是专门处理,Android API 中的WebView使用,公共方法抽取定义: package common.library.utils; import android ...

  10. memcached分布式缓存系统

    在数据驱动的Web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵活.此时 ...