1、函数文件调用的理解 通过Q函数和erfc函数的关系来理解 1 问题描述 在使用Matlab时 有时遇到某个函数不在库函数中 不能直接调用 或者根 据需要而编辑一个函数来调用 这就需要定义一个函数 即函数文件 编辑调试成功之后 就以象库函数一样方便地调用了 2 下面通过Q函数的调用的例子来理解 2 1 例子 求解 2pQ 式 1 2 2 分析 Matlab中没有Q函数 所以此时不能直接使用Q函数 解决方法有两种 一种是根据Q函数与互补误差函数erfc之间的转换关系 见式 2和式 3 将Q函数写成erfc 函数 matlab中有此函数 的形式 1 2 2 x Qx erfc 式 2 2erfc x
2、 Q x 2 式 3 另一种就是通过上述两者的关系定义一个函数文件即Q函数文件 这样就可以直接使 用Q函数了 2 3 解决 2 3 1 解决方法一 直接转换方法 已知式 1 2pQ 即2x 根据式 2 也即 211 2 22 2 Q x Q erfc erfc 得到 1 2 2 pQ erfc 式 4 这样例子式 1中Q函数的求解就变成了erfc函数的求解了 相应Matlab编程实现 p error erfc sqrt gamma 2 对应式 4 Matlab中没有q函数 此时无法直接运行p error q sqrt 2 gamma 2 3 2 解决方法二 函数调用方法 已知式 1 2pQ 在
3、matlab中不能直接使用Q函数 根据式 2定义一个Q函数 然后就直接调用Q函数了 相应Matlab编程实现 下面是Q函数文件 function y q x 对应Function 输出形参列表 函数名 输入形参列表 y erfc x sqrt 2 2 对应 程序语句段 根据式 2 调用Q函数 p error q sqrt 2 gamma 即可以直接运行Q函数了 等同于上面的p error erfc sqrt gamma 2 对应式 4 注意 2x 将后者作为一个整体来使用 2 4 小结 通过实际的例子 讲述了如何定义一个函数 在本例中 采用两种解决方法 但两者的 本质是一样的 都是运用了两个函
4、数的转换关系 只不过第一种是采用命令文件的形式 第 二种采用函数文件的形式 关于命令文件和函数文件以及二者的区别见下 3 背景知识 Matlab中的M文件 从功能上可以分为两类 命令文件和函数文件 3 1 命令文件 命令文件又称为脚本文件 它没有输入输出参数 实际上是一串指令的集合 类似于 DOS下的批处理文件 3 2 函数文件 函数文件是另一种格式的M文件 每个函数文件都定义一个函数 编辑调试成功后就 可以库函数一样方便地调用 从而极大地扩展了Matlab的能力 函数文件是由function语句引导的 其基本格式如下 Function 输出形参列表 函数名 输入形参列表 注释说明语句段 程序
5、语句段 一旦编写好函数文件 就可以调用该函数进行计算了 函数调用的格式为 输出实参列表 函数名 输入实参列表 3 3 命令和函数文件的区别 函数文件和命令文件的区别之处在于 函数文件可以传递函数 而命令文件不具备这种 功能 同时 命令文件中的变量都是全局变量 文件执行完后 这些变量还是有效变量 仍 然保存在工作区中 而函数文件中定义和使用的变量除非经过特殊声明 都是局部变量 只 在本函数中才有效 当函数文件执行完成后 这些变量将被清除 即变成无效变量 这样 就保证了在使用函数文件时 只要关心函数的输入和输出即可 而不用担心函数 文件执行结束后 文件中的变量会对后续工作造成影响 注 根据作用域的不同 可以将程序中的变量分为局部变量和全局变量 命令文件中的 变量都是全局变量 而函数文件中的内部变量是局部变量 只能在本函数的范围内使用 它 是不能直接被另一个函数文件调用的 如果想在函数中实现变量函数间的调用 则要使用全 局变量 参考 背景知识来自 MATLAB教程 罗建军主编 杨琦副主编 电子工业出版社