您的位置:首页 > 编程语言 > MATLAB

matlab 编写M文件(函数)入门笔记

2013-07-12 00:30 309 查看
本文最开始出自misskissC博客(matlab M文件编写)由同一人编写。

matlab的命令编辑窗口(Command Window)界面主要是用来调用系统命令、调用自定义函数(m文件里定义的函数)或编写一些较小的代码。在遇到需要用到比较多的代码才能摆平的需求时,在命令编辑窗口每一行都有提示输入符号,用起来不是很方便(如前所述而且命令编辑窗口主要是用来调用命令之用),此时我们不得不求助于matlab的m文件来编写代码。所以,记录一下经自行探索其编写方式后的入门过程:

版本:MATLAB 7.9.0(R2009b)

1.新建m文件

打开matlab软件-->file-->new-->Function m-file

经过此步骤之后,matlab会弹出一个新的编辑窗口,并生成少许代码如下:

function [ output_args ] = Untitled( input_args )
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here

end


这些代码是一个m-函数的模板。

function:表示编写的是一个函数。

output_args: 表示编写此函数的返回值(不同于C语言的是需要被返回的值无需使用return语句,只要将outp_args相应的参数拿到代码中赋值即可,同一般变量的使用),各返回值间用逗号隔开。

input_args: 此函数的输入参数,各参数之间用逗号隔开。

Untitled: 这是您所编写函数时所定义的函数名。注意:函数名和m文件名需要保持一致。如刚所创建的m文件在工作空间时命名为“RungeKuttaCalculate.m”则相应的函数名也需要为“RungeKuttaCalculate”,否则会引起报错。

%: 是matlab的注释语句的注释符,相当于C语言中的行注释符"//",在这里你可以描述此函数的功能,参数含义和返回值含义,使其含义更加明确。

剩余空间:从%到最后面的end部分是编辑代码的空间。end表示此函数编辑完毕。

总结函数文件的基本结构:

function [ 输出形参表:output1, output1...outptn ]=函数名 [输出函数形参表:input1, input2..., inputn]

注释说明部分

函数体代码部分

end

说明:

在调用函数时要使用编写此函数的文件名,一般函数名和文件名保持一致。
函数中遇return语句时,此函数调用结束。
函数调用的一般格式是: [输出实参表]=函数名(输入实参表)
在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。

附:2.编写代码

(1)matlab数据类型

Matlab中有15种基本数据类型,主要是整型、浮点、逻辑、字符、日期和时间、结构数组、单元格数组以及函数句柄等。(http://hi.baidu.com/yicomrdztxbeiwd/item/37b3f246de294596823ae16c一般在简单应用中用到的整形(用作循环变量)、矩阵、数组较多。

(2)matlab的流程控制语句

matlab的流程控制语句跟C语言中的语句差不多,只是使用的形式有点不同。在C语言中if, for, while等是使用"}"或者“;”(其中只包含一条语句时)来结束。在matlab中他们使用的形式如下:

if语句

if 条件1

matlab语句1;

【 elseif 条件2

matlab语句2;

.......

else

matlab语句n;】

end

end来标识if语句内的matlab语句完结,如果其中有一个逻辑条件为真则执行相应的matlab语句,否则跳过整个if语句内容执行后继语句。

【】内容为可选内容,根据需求而定。但是if....elseif必须匹配。

switch语句

switch 表达式

case 表达式1

matlab语句1

case 表达式2

matlab语句2

....

case 表达式n

matlab语句n

otherwise

matlab语句n+1

end

跟if语句相似,用switch下面的表达式来匹配case表达式中的内容,匹配到哪一个case表达式,相应的matlab语句就会被执行。

try语句

try

matlab语句1

catch

matlab语句2

end

try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。这种试探性执行语句是其他高级语言所没有的。

for语句

for 循环变量=初始值:步长:终值

循环体语句

end

如果初始值在付给循环变量后,循环变量的值介于初始值与终值之间则执行循环体语句,每次执行后循环变量增加步长值,再与终值比较是否小于终值,若还小于终值,则执行循环体语句,若非,则跳出for循环执行后继语句。如此循环直到跳出for循环为止。

while语句

while(条件)

循环体语句

end

其执行过程为:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循.

循环嵌套,个循环之间可以嵌套使用。

在m文件的函数编写中,撇开读取文件操作不谈使用基本的流程控制和matlab基本数据类型,再加上调用matlab强大的库函数已经可以做很多事情了,起码做作业没问题了撒,用龙格-库塔解线性方程组时用上面之所列举足矣(加点数组定义法)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: