MATLAB学习笔记(五)
来源:互联网 发布:oppo心理软件 编辑:程序博客网 时间:2024/06/16 00:16
MATLAB自定义函数
1.创建单输入/输出和多输入/输出自定义函数
2.在工具箱中保存或调用自定义函数
3.创建和使用匿名函数
4.创建和使用函数句柄
5.创建和使用子函数和嵌套函数
1.创建函数的M文件
1)创建自定义函数
如图所示,在新建选项中选择新建函数
输入以下脚本,保存为poly.m
function output = poly( x )%UNTITLED 此处显示有关此函数的摘要% 此处显示详细说明output = 3 * x .^ 3 + 5 * x ^ 2 - 2 * x + 1;end
注意:调用函数前,必须将函数的文件先保存到当前目录中,为了便于查找,文件名必须和函数名相同。函数的命名应该遵循前面介绍过的MATLAB的命名规则。
调用函数执行:
>> poly(4)ans = 265
2)注释
创建函数:
function output = tag( number )%这个函数是一个自定义函数% 我的自定义函数tagoutput = number * number + 2 * number * 4;end
使用help命令可以输出函数的注释内容
>> help tag 这个函数是一个自定义函数 我的自定义函数tag
3)多输入输出函数
定义函数motion.m
function [ dist,vel,accel ] = motion( t )% UNTITLED4 此处显示有关此函数的摘要% 此处显示详细说明accel = 0.5 .* t;vel = accel .* t;dist = vel .* t;end
执行:
>> [accel,vel,dist] = motion(10)accel = 500vel = 50dist = 5
若调用motion时没有指定全部三个输出变量,则只输出第一个变量
>> motion(10)ans = 500
4)没有输入或输出变量的函数
大部分函数都至少有一个输入或输出变量,但有的函数没有输入或输出变量。
例如:MATLAB函数clock没有输入变量但有输出变量
>> A = clockA = 1.0e+03 * 2.0150 0.0050 0.0180 0.0100 0.0520 0.0310
5)确定输入/输出变量的数目
函数nargin可以确定输入变量的数目,函数nargout可以确定输出变量的个数。
>> nargin('sin')ans = 1>> nargin('rem')ans = 2
有些函数的输入变量个数是不确定的,这时函数会输出负数
>> nargin('surf')ans = -1
6)局部变量
函数的M文件中的所有变量都称为局部变量。工作区与函数之间进行交互的唯一方式是利用输入变量和输出变量,在函数体中定义的所有变量仅允许函数自己使用。
7)全局变量
与局部变量不同,全局变量是整个程序的变量,但一般情况下不定义全局变量。在命令窗口或脚本M文件定义的变量都是全局变量,为了避免用户无意中使用全局变量,要求在函数中使用全局变量时必须进行特殊申明。
函数:
function output = tag( number )global Goutput = number * G;end
调用:
>> global G>> G = 9G = 9>> tag(4)ans = 36
2.创建函数工具箱
调用MATLAB函数时,首先在当前路径中查找该函数,如果没有找到,则按照预先设定的搜索路径查找函数名。设置搜索路径的方法是在主菜单中点击File- Set path,或者输入命令pathtool
。
随着程序中函数数量的增加,通常会把相关文件存放在用户的个人工具箱中,并设置相应的搜索路径。录入把前面的函数保存在My_function目录中。
在对话框中单击ADD Folder来添加文件夹,即可将自己的目录添加进去。
MATLAB先在当前路径中查找函数,然后,再根据修改后的搜索路径查找。
除非设置成永久路径,否则修改的路径只能在当前对话中有效。
在路径设置工具中可以采用交互式的方法修改MATLAB的搜索路径,使用函数addpath
可以添加新的搜索路径。使用函数help addpath
可以查看addpath的使用方法。
3.匿名函数和函数句柄
匿名函数是一种简单的函数构造方法。用户可以直接在命令窗口或脚本M文件中定义和使用匿名函数,匿名函数看起来更像是一个变量,只要不清空工作区,匿名函数都是有效的
>> ln = @(x) log(x)ln = @(x)log(x)>> ln(4)ans = 1.3863
匿名函数ln
当做变量用以下语句保存和使用:
>> save ln_function ln>> load ln_function
4.复合函数
绘图函数fplot就是MATLAB中的内置复合函数,它要求有两个输入参数:一个输入参数是函数或函数句柄,另外一个输入参数是函数的取值范围。
>> lnln = @(x)log(x)>> fplot(ln,[0.1,10])
如果不使用函数句柄,则可以直接使用字符串表示函数名:
>> fplot('log(x)',[0.1,10])
运行效果如上图。
【example】
在上面的例子中,使用函数句柄的优越性并没有体现出来。但是,如果匿名函数是计算五阶多项式的值:
>> poly5 = @(x) -5*x .^ 5 + 400 * x .^ 4 + 3 * x .^ 3 + 20 * x .^ 2 - x * 5 poly5 = @(x)-5*x.^5+400*x.^4+3*x.^3+20*x.^2-x*5>> fplot(poly5,[-30,90])
5.子函数
在同一个文件中,除了主函数外还可以创建多个子函数。子函数智能被主函数调用,因此子函数的使用时受限制的。使用子函数有利于程序的模块化,能够使程序的可读性增强。
每一个MATLAB的M文件只能有一个子函数,并且M文件名必须和主函数名相同。因此存储在M文件my_function.m中的主函数名必须是my_function。主函数之后可以定义任何合法的子函数,子函数的命名规则与变量的命名规则相同。
function [add_result,sub_result] = myfunction(x,y)add_result = add(x,y);sub_result = sub(x,y);endfunction result = add(x,y)result = x + y;endfunction result = sub(x,y)result = x - y;end
>> [addres,subres] = myfunction(10,3)addres = 13subres = 7
- Matlab学习笔记(五)
- MATLAB学习笔记(五)
- [Matlab]基础教程学习笔记(五):二维底层绘图修饰
- 【Matlab学习笔记】(五)变量与常量
- MATLAB学习笔记五(关于图像处理)
- 《电路计算C++与MATLAB》学习笔记(五)
- Matlab学习笔记五:字符串操作
- 学习笔记(五)
- 学习笔记(五)
- MATLAB学习笔记(五):符号计算(符号矩阵+代数方程组求解)
- Matlab图像处理学习笔记(五):Harris角点检测
- matlab学习笔记(五)---空域变换增强-直接灰度调整
- Matlab学习(五)
- MATLAB学习(五)MATLAB中调用C语言函数
- MatLab学习笔记(1)
- Matlab学习笔记(一)
- MATLAB学习笔记(一)
- MatLab学习笔记(二)
- openstack kilo版本heat安装问题
- remedy得到URL中参数,设置到字段里
- mac安装与破解Wing IDE方法
- 重要的疑问???
- jquery check全选和非全选操作
- MATLAB学习笔记(五)
- Remedy 删除一条数据
- remedy时间格式化
- LVS的安装
- Remedy JAVA API 登录不了的解决办法
- Leetcode 20 Valid Parentheses
- python,numpy库学习ndarray,narray
- JavaScript与Remedy表单
- Associative(关联)