MATLAB学习笔记(五)

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 )
%这个函数是一个自定义函数
%   我的自定义函数tag
output = 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 =
   500
vel =
    50
dist =
     5

若调用motion时没有指定全部三个输出变量,则只输出第一个变量

>> motion(10)
ans =
   500 

4)没有输入或输出变量的函数
大部分函数都至少有一个输入或输出变量,但有的函数没有输入或输出变量。
例如:MATLAB函数clock没有输入变量但有输出变量

>> A = clock
A =
   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 G
output = number * G;
end

调用:

>> global G
>> G = 9
G =
     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中的内置复合函数,它要求有两个输入参数:一个输入参数是函数或函数句柄,另外一个输入参数是函数的取值范围。

>> ln
ln = 
    @(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);
end

function result = add(x,y)
result = x + y;
end

function result = sub(x,y)
result = x - y;
end
>> [addres,subres] = myfunction(10,3)
addres =
    13
subres =
     7
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习MATLAB时,编写学习笔记是一种很好的方法,可以帮助您记录重要的概念、语法和技巧,以及解决问题的步骤。以下是一些关于编写MATLAB学习笔记的建议: 1. 组织结构:使用清晰的标题和分节来组织您的学习笔记。将不同的主题分成单独的部分,并使用子标题来进一步细分内容。 2. 内容概要:在每个部分或子标题下,写下该主题的概要。这样可以帮助您回顾和理解该主题的关键点。 3. 示例代码和输出:对于每个主题,包括一些示例代码和相应的输出结果。这有助于您理解和演示具体的MATLAB语法和功能。 4. 问题与解答:如果您在学习过程中遇到了一些困惑或问题,将其记录下来,并在笔记中提出并解答这些问题。这样可以帮助您深入思考并加深对该主题的理解。 5. 笔记补充:除了基本概念和语法外,您还可以添加一些额外的笔记,如最佳实践、编程技巧、常见错误等。这些额外的笔记可以提供更多的实用信息和提示。 6. 参考资料:在您的学习笔记中,包括引用的参考资料,如教程、文档、书籍或网站链接。这样,您可以随时回顾并深入研究相关的主题。 7. 总结和复习:在学习笔记的结尾,添加一个总结部分,回顾和总结您学到的重点和关键概念。此外,定期复习您的学习笔记也是加深理解和记忆的好方法。 以上是关于编写MATLAB学习笔记的一些建议。希望这对您有所帮助,并祝您在MATLAB学习过程中取得成功!如果有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值