1、M文件

  用Matlab 语言编写的程序,称为M文件,后缀名为 .M。实质上M文件也就是一个文本文件,可以使用任何编辑程序来建立和编辑,默认使用Matlab提供的文本编辑器打开进行编辑。
  在进一步探讨M文件之前,我们先回顾一下我们上一篇blogMatlab基础知识中讲解使用了那些类型的文件:

  • 内存变量文件 后缀名.mat
save filename [var_list] [-append][-ascii];
load filename [var_list] [-ascii];
  • 用 .M 文件 生成矩阵
mydata=[1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9; 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9; 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9];
  • 用.dat文件生成矩阵
2 4 6 8 6 ;3 5 6 7 3 ;2 5 1 2 5
load test.dat

  也就是说我们已经用过 .M文件了,而且上一次我们存的是数据 mydata。这就要引出我们下面要说的了: M文件的分类
  M文件分为两类:

  • 命令文 件(Script File)
  • 函数文件(Function File)
    主要区别如下:
    (1)命令文件没有输入参数,也不返回输出参数, 而函数文件可以带输入参数,也可返回输出参数。
    (2)命令文件对MATLAB工作空间中的变量进行 操作,文件中所有命令的执行结果也完全返回到工作空间中,而函数文件中定义的变量为局部变量, 当函数文件执行完毕时,这些变量被清除。
    (3)命令文件可以直接运行,在MATLAB命令窗口输入命令文件的名字,就会顺序执行命令文件中的命令,而函数文件不能直接运行,而要以函数调用的方式来调用它。
// 命令文件
clear;
R=[1,2,3;4,5,6];
M=[11,12,13;14,15,16];
RM=R+i*M 
// 函数文件
function RM=fsetcomp(R,M)
RM=R+i*M;

PS:如果你理解了他们之间的区别,那么你现在应该清楚的知道我们在上一篇文章中使用的.M文件属于 命令文件。

下面就来详细讲讲函数文件
  函数文件是另一种形式的M文件,每一个函 数文件都定义一个函数。 事实上,MATLAB提供的标准函数大部分 都是由函数文件定义的。基本结构如下:

function 输出形参表=函数名(输入形参表)
注释说明部分
函数体语句 

说明:
  以function开头的一行为引导行,表示该M 文件是一个函数文件。函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函 数的输出参数。当输出形参多于一个时,则应该用方括号括起来。 函数文件名通常由函数名再加上扩展名.m组成,不过函数文件名与函数名也可以不相同。当两者不同时,MATLAB将忽略函数名而确认函数文件名,因此,调用时使用函数文件名。
  注释非常极其重要,不写注释的代码我基本是不愿意看的。标准注释说明包括如下3部分内容:

  • 紧随函数文件引导行之后以%开头的第一注释行。 这一行一般包括大写的函数文件名和函数功能简要 描述,供lookfor关键词查询和help在线帮助用
  • 第一注释行及之后连续的注释行。通常包括函数 输入输出参数的含义及调用格式说明等信息,构成 全部在线帮助文本
  • 与在线帮助文本相隔一空行的注释行。包括函数 文件编写和修改的信息,如作者、修改日期、版本 等内容,用于软件档案管理。
// 函数调用格式[nargout]=func(nargin) 

  MATLAB在函数调用上有一个与一般高级语言不同之处,就是函数所传递参数数目的可调性。 在调用函数时,MATLAB用两个永久变量nargin 和nargout分别记录调用该函数时的输入实参和输出 实参的个数。只要在函数文件中包含这两个变量, 就可以准确地知道该函数文件被调用时的输入/输出 参数个数,从而决定函数如何进行处理。

再提一个小点,如果在函数中想使用全局变量,用global var_name

2、程序控制结构

  程序控制结构对学过C++,学过Java的同学来说肯定是 a piece of cake ,这里简单的说一下Matlab的程序控制结构。

  • 顺序结构
// 数据输入
A=input(tips_info,option);
// 数据输出
disp(str|matrix)
//暂停
pause(secs)
  • 选择结构
if  condition block1
elseif conditionblock2
else block3
end
switch  表达式     case  结果表1 语句块1      case  结果表2 语句块2      ……     case  结果表n  otherwise 语句块n+1
end 

  switch子句后面的表达式应为一个标量 或一个字符串case子句后面的结果不仅可以为一个标量或一个字符串,而且还可以为 一个将多个结果用大括号括起来的单元数据 (Cell)。如果case子句后面的结果为一个 单元数据,则表达式的值等于该单元数据中 的某个元素时,执行相应的语句组。

try    语句块1
catch   语句块2
end

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

  • 循环结构
for 循环变量=表达式1:表达式2:表达式3 循环体语句
end 
// 例如,求1-100的和
// 特别说明malab和python切片操作是有区别的,如果你同时使用python
//和matlab,甚至还有R语言,一定要注意它们之间的细微差别sum=0;
for m=1:100sum=sum+m;
end
sum

划重点

//执行过程是依次将矩阵的各列元素赋给循环变 量,然后执行循环体语句,直至各列元素处理完毕
for 循环变量=矩阵表达式
循环体语句
end 
while(条件)
循环体语句
End 

  最后提一下两个循环的老朋友,break和continue:break语句用于终止循环的执行。当在循环 体内执行到该语句时,程序将跳出循环,继 续执行循环语句的下一语句。continue语句控制跳过循环体中的某些语 句。当在循环体内执行到该语句时,程序将 跳过循环体中所有剩下的语句,继续下一次循环。

程序性能分析与优化

  这是程序设计中个非常重要的一步,这就好比漂亮的车子有很多,但是钱不够一切都是然并卵;而对于程序他需要考虑的是对资源的占用、时间的消耗。一个好的程序能够在占用最少资源的情况好快速高效的完成规定业务。
  在matlib中,Profiler性能评估器、tic函数和toc函数能分析程序各环节的耗时情况,分析报告能帮助用户寻 找影响程序运行速度的“瓶颈”所在,以便于进行程序优化。例如,通过函数文件性能评估器(Profiler)用户可以很 方便地了解程序执行过程中各函数及函数中的每条 语句所耗费的时间,从而有针对性地改进程序,提 高程序的运行效率。

matlab 程序优化常见思路

  • 向量化
      这是一个非常重要的编程思想,因为GPU和CPU都含有并行化指令或者称之为SIMD(single instruction multiple data)指令。向量化能够充分利用并行化从而更加快速的计算,这点在GPU和CPU上面都是成立的,GPU更加擅长SIMD计算但是CPU实际上也不差,只是没有GPU擅长而已。

  • 预分配内存空间
      通过在循环之前预分配向量或数组的内存空间可以提高for循环的处理速度。

  • 减小运算强度
      采用运算量更小的表达式,一般来说,乘法比乘方运算快,加法比乘法运算快,位运算比求余运算快。

matlab 程序设计相关推荐

  1. c2064 项不会计算为接受0个参数的函数_无网格法理论与Matlab程序设计(6)——传统径向基点插值(RPIM)形函数...

    参考资料 G.R.Liu Y.T.GU著 王建明 周学军译 <无网格法理论及程序设计> 数值实现 Matlab 2019a 前情回顾 形式主义的居士:无网格法理论与Matlab程序设计(1 ...

  2. matlab平面问题编程,有限元平面矩形单元MATLAB程序设计.docx

    有限元平面矩形单元MATLAB程序设计 有限元平面矩形单元MATLAB程序设计摘要本论文主要研究内容是有限元平面矩形单元的基本原理和MATLAB软件的图形用户界面及函数编程的基本知识,并根据有限元平面 ...

  3. 实验5 matlab程序设计2,实验5 Matlab程序设计2

    实验5 Matlab程序设计2 1. 实验目的: 2. 掌握建立和执行M文件的方法: 3. 掌握实现选择结构的方法: 4. 掌握实现循环结构的方法. 5. 熟悉利用向量运算来代替循环操作的方法. 6. ...

  4. matlab程序设计图像匹配,灰度,归一化算法,快速匹配。有代码好用。转载

    图像匹配matlab程序设计:1. 概念解释,2.数字图像匹配算法设计:⑴基于灰度的归一化匹配算法⑵基于灰度的快速模板匹配算法.三.相应matlab程序设计:1.数字图像匹配相关函数 2.数字图像匹配 ...

  5. matlab用for编写乘法表,实验二 Matlab程序设计基本方法1

    实验二Matlab程序设计基本方法 覃照乘自092 电气工程学院 一.实验目的: 1.熟悉MATLAB 程序编辑与设计环境 2.掌握各种编程语句语法规则及程序设计方法 3.函数文件的编写和设计 4.了 ...

  6. matlab编写文件格式,MATLAB程序设计教程(4)——MATLAB文件操作

    MATLAB程序设计教程(4)--MATLAB文件操作 第4章MATLAB文件操作 4.1 文件的打开与关闭 4.2  文件的读写操作 4.3  数据文件定位 4.1 文件的打开与关闭 4.1.1 文 ...

  7. MATLAB程序设计与应用刘卫国(第三版)课后实验答案——12

    MATLAB程序设计与应用刘卫国(第三版)课后实验答案--12 一 二 三 四 五 一 syms n x; s1=symsum(1/(2*n-1),n,1,10) s2=symsum(n*2+x^(n ...

  8. matlab中sqp的算法原理_最优化方法及其Matlab程序设计 马昌凤

    内容简介<最优化方法及其Matlab程序设计>较系统地介绍了非线性最优化问题的基本理论和算法,以及主要算法的Matlab程序设计,主要内容包括(精确或非精确)线搜索技术.最速下降法与(修正 ...

  9. MATLAB程序设计与应用 4.1 M文件

    MATLAB程序设计与应用 文章目录 MATLAB程序设计与应用 4. 第4章 MATLAB程序流程控制 4.1 M文件 4.1.1 M文件的建立与打开 4.1.2 M文件的分类 4. 第4章 MAT ...

  10. 实验三matlab实现,实验三matlab程序设计.docx

    实验三matlab程序设计.docx 共 24 页,第 27页 27 2014秋2012级<MATLAB程序设计>实验报告 班级:软件C121 姓名:冯杨腾 学号:125692 实验三 M ...

最新文章

  1. 71 mac boook pro 无 gpu 下caffe 安装
  2. You are my brother
  3. Android 快捷方式的创建与查询 快捷方式问题大全 获取快捷方式在Launcher数据库中的信息 Failed to find provider info for com.android.la
  4. 进程间通信(6) 邮槽
  5. 编程python爬取网页数据教程_实例讲解Python爬取网页数据
  6. 三维家可以导入别人的方案吗_广州深圳天津形位公差检测三维缺陷检测服务
  7. 【iCore3 双核心板】例程二十二:LAN_UDP实验——以太网数据传输
  8. Python 学习笔记——文件对象和操作
  9. mysqldump实现数据备份及灾难恢复
  10. 阿里云播放器单击切换播放/暂停
  11. 搜索系统硬盘中包含指定字符串的文件的工具和方法——全文搜索、搜索文件内容(持续更新中)
  12. laravel框架跨域请求
  13. Android热修复技术——QQ空间补丁方案解析(2)
  14. keyshot手机渲染教程_keyshot渲染教程
  15. 博士第一年,要把这些计算机基础课程学好(附教程)
  16. php7安装(多个php版本共存)
  17. 【每日知识】res是什么意思?
  18. isosurface matlab,[matlab][isosurface]画隐函数的等值曲线或曲面
  19. VS2010e rror LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
  20. mac聚焦搜索Spotlight怎么用

热门文章

  1. hadoop2.6.0安装详细步骤
  2. C语言 满分代码 L1-047 装睡(解题报告)
  3. 魅族升级android p,高通宣布:这些手机将第一时间升级Android P!
  4. c语言中常用的预处理命令6,C语言的预处理命令
  5. 路由器的基本配置实验报告_上了全屋智能,家里路由器不给力,更换路由器时要注意什么...
  6. Windows Server 笔记之远程桌面
  7. STM32的时钟配置——时钟树解析
  8. php 匹配正则,php正则匹配类
  9. java卡片布局例子_Java编程使用卡片布局管理器示例【基于swing组件】
  10. java计算器监听_计算器及事件监听