MATLAB 函数

MATLAB 函数

在这里插入图片描述

函数是一起执行任务的一组语句。在MATLAB中,函数是在单独的文件中定义的。文件名和函数名应该相同。

函数在其自己的工作空间(也称为本地工作空间)中对变量进行操作,与在MATLAB命令提示符下访问的工作空间(称为基本工作空间)不同。

函数可以接受多个输入参数,并且可以返回多个输出参数。

函数语句的语法是-

function [out1,out2, …, outN] = myfun(in1,in2,in3, …, inN)
在线示例
以下名为mymax的函数应写入名为mymax.m的文件中。它以五个数字作为参数,并返回最大的数字。

创建一个函数文件,命名mymax.m并在其中输入以下代码-

function max = mymax(n1, n2, n3, n4, n5)

%此函数用于计算
%输入五个数字
max = n1;
if(n2 > max)
max = n2;
end
if(n3 > max)
max = n3;
end
if(n4 > max)
max = n4;
end
if(n5 > max)
max = n5;
end
函数的第一行以关键字 function开头 。它给出了函数的名称和参数的顺序。在我们的示例中,mymax函数具有五个输入参数和一个输出参数。

函数语句后的注释行提供帮助文本。当您键入以下内容时,将打印这些行:

help mymax
MATLAB将执行上述语句并返回以下结果-

This function calculates the maximum of the
five numbers given as input
您可以将函数称为-

mymax(34, 78, 89, 23, 11)
MATLAB将执行上述语句并返回以下结果-

ans = 89
匿名函数
匿名函数就像传统编程语言中的内联函数一样,是在单个MATLAB语句中定义的。它由一个MATLAB表达式以及任意数量的输入和输出参数组成。

您可以直接在MATLAB命令行或在函数或脚本中定义匿名函数。

这样,您可以创建简单的功能,而不必为其创建文件。

从表达式创建匿名函数的语法是

f = @(arglist)expression
实例
在此示例中,我们将编写一个名为power的匿名函数,该函数将两个数字作为输入,并将第一个数字提高为第二个数字的幂。

创建一个脚本文件并在其中键入以下代码-

示例
power = @(x, n) x.^n;
result1 = power(7, 3)
result2 = power(49, 0.5)
result3 = power(10, -10)
result4 = power (4.5, 1.5)
运行文件时,它显示-

result1 = 343
result2 = 7
result3 = 1.0000e-10
result4 = 9.5459
主和子函数
必须在文件中定义除匿名函数以外的任何函数。每个函数文件都包含一个首先出现的必需主函数,以及在主函数之后并由其使用的任意数量的可选子函数。

可以从定义主文件的文件外部(从命令行或其他函数)调用主函数,但是不能从命令行或其他函数在功能文件外部调用子函数。

子函数仅对主函数和定义它们的函数文件中的其他子函数可见。

实例
让我们写一个名为quadratic的函数来计算一个二次方程的根。该函数包含三个输入:二次系数、线性系数和常数项。它将回归根。

函数文件quadratic.m将包含主函数quadratic和子函数disc,后者计算判别式。

创建一个函数文件 quadratic.m 并在其中输入以下代码

function [x1,x2] = quadratic(a,b,c)

%此函数返回
%二次方程。
%它需要3个输入参数
%x2,x和
%常数项
%它返回根
d = disc(a,b,c);
x1 = (-b + d) / (2a);
x2 = (-b - d) / (2
a);
end % end of quadratic

function dis = disc(a,b,c)
%函数计算判别式
dis = sqrt(b^2 - 4ac);
end % end of sub-function
您可以从命令提示符处调用上述功能,如下所示:

quadratic(2,4,-4)
MATLAB将执行上述语句并返回以下结果-

ans = 0.7321
嵌套函数
您可以在另一个函数的主体内定义函数。这些称为嵌套函数。嵌套函数包含任何其他函数的任何或所有组件。

嵌套函数在另一个函数的范围内定义,它们共享对包含函数的工作区的访问。

嵌套函数遵循以下语法-

function x = A(p1, p2)

B(p2)
function y = B(p3)

end

end
实例
让我们重写前面实例中的quadratic函数,不过,这次disc函数将是一个嵌套函数。

创建一个函数文件quadratic2.m,并在其中输入以下代码-

function [x1,x2] = quadratic2(a,b,c)
function disc %嵌套函数
d = sqrt(b^2 - 4ac);
end % 结束函数disc

disc;
x1 = (-b + d) / (2a);
x2 = (-b - d) / (2
a);
end %结束函数 quadratic2
您可以从命令提示符处调用上述函数,如下所示:

quadratic2(2,4,-4)
MATLAB将执行上述语句并返回以下结果-

ans = 0.73205
私有函数
私有函数是仅对有限的一组其他函数可见的主函数。如果不想公开函数function(s)的实现,可以将它们创建为私有函数。

私有函数位于具有特殊名称 Private 的子文件夹中。

它们仅对父文件夹中的函数可见。

实例
让我们重写quadratic函数。不过,这一次,disc函数计算判别式,将是一个私有函数。

在工作目录文件夹中创建一个名为 private 的子文件夹,在其中存储以下函数文件 disc.m

function dis = disc(a,b,c)
%函数计算判别式
dis = sqrt(b^2 - 4ac);
end %子函数结束
在您的工作目录中创建一个函数 quadratic3.m ,并在其中输入以下代码-

function [x1,x2] = quadratic3(a,b,c)

% 这个函数返回
% 一元二次方程。
它需要3个输入参数
% 它们是 x2,x 和
% 常数项
% 它返回根
d = disc(a,b,c);

x1 = (-b + d) / (2a);
x2 = (-b - d) / (2
a);
end %结束 quadratic3
您可以从命令提示符处调用上述函数,如下所示:

quadratic3(2,4,-4)
MATLAB将执行上述语句并返回以下结果-

ans = 0.73205
全局变量
全局变量可以由多个函数共享。为此,您需要在所有函数中将变量声明为全局变量。

如果要从基本工作空间访问该变量,请在命令行中声明该变量。

全局声明必须在变量实际在函数中使用之前发生。最好将大写字母用作全局变量的名称,以将其与其他变量区分开。

实例
让我们创建一个名为average.m的函数文件,并在其中输入以下代码-

function avg = average(nums)
global TOTAL
avg = sum(nums)/TOTAL;
end
创建一个脚本文件并在其中键入以下代码-

global TOTAL;
TOTAL = 10;
n = [34, 45, 25, 45, 33, 19, 40, 34, 38, 42];
av = average(n)
运行文件时,它将显示以下结果-

av = 35.500

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/587501.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

口袋实验室--使用AD2学习频谱参数测试

目录 1. 简介 2. 频谱相关参数 2.1 频谱相关基本概念 2.1.1 采样时间间隔 2.1.2 采样频率 2.1.3 采样点数 2.1.4 采样时间长度 2.1.5 谱线数 2.1.6 奈奎斯特频率 2.1.7 频谱分辨率 2.1.8 最高分析频率 2.1.9 频谱泄露 2.2 窗函数 2.2.1 AD2的窗函数 2.2.2 测试矩…

[NeurIPS-23] GOHA: Generalizable One-shot 3D Neural Head Avatar

[pdf | proj | code] 本文提出一种基于单图的可驱动虚拟人像重建框架。基于3DMM给粗重建、驱动结果,基于神经辐射场给细粒度平滑结果。 方法 给定源图片I_s和目标图片I_t,希望生成图片I_o具有源图片ID和目标图片表情位姿。本文提出三个分支:…

Ubuntu卸载已安装软件

前言 在Linux系统上安装了一些软件,但是卸载起来相比于Windows系统麻烦的多,这里总结了两种办法,希望对遇到这种问题的小伙伴能够有所帮助 1.Ubuntu Software 卸载 1.点击桌面上的Ubuntu Software并且选择installed 选中想要卸载的软件再按…

ECHARTS学习

坐标轴 option {xAxis: {type: category,data: [A, B, C]},yAxis: {type: value},series: [{data: [120, 200, 150],type: line}] }; 1、坐标轴的默认类型type是数值型,而xAxis指定了类目型的data,所以Echarts也能识别出这是类目型的坐标轴,…

C# 实现格式化文本导入到Excel

目录 需求 Excel 的文本文件导入功能 范例运行环境 配置Office DCOM 实现 组件库引入 OpenTextToExcelFile 代码 调用 小结 需求 在一些导入功能里,甲方经常会给我们一些格式化的文本,类似 CSV 那样的纯文本。比如有关质量监督的标准文件&…

C++入门——基本概念与关键字(上)

兜兜转转终于来到C的学习,C作为一种更高级的语言,是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式,本节笔者旨在带领读者理解C是如何对C语言设计不合理的地方进行优化的&am…

【二叉树——数据结构】

文章目录 1.二叉树1.基本概念.几种特殊的二叉树 2.考点3.二叉树的存储结构4.二叉树的遍历5.线索二叉树 1.二叉树 1.基本概念. 二叉树是n(n>0)个结点的有限集合 或者为空二叉树,即n0 或者由一个根结点和两个互不相交的被称作根的左子树和右子树组成。 每个结点至…

Linux系统编程——操作系统的初步认识(Operator System)

目录 一,关于操作系统 二,计算机的层次设计 2.1 硬件层 2.2 驱动层 2.3 操作系统层 2.4 用户层 2.5 系统调用接口 2.6 用户调用接口 三,操作系统管理的精髓 —— 先描述,再组织 3.1 什么是先描述? 3.2 什么…

php反序列化以及相关例题

目录 一、什么是序列化和反序列化? 二、相关函数 serialize()函数: unserialize()函数:反序列化 三、PHP序列化格式 四、序列化与反序列化的作用 五、各种数据类型序列化后的效果 六、魔术方法 七、反序列化的一些绕过 八…

国家开放大学《TRIZ技术创新方法应用培训》形考任务和终考任务作业参考答案

答案:更多答案,请关注【电大搜题】微信公众号 答案:更多答案,请关注【电大搜题】微信公众号 答案:更多答案,请关注【电大搜题】微信公众号 参考答案包含 形考任务项目报告、终考任务 、单元测试、随…

【IDEA】IDEA自带Maven/JDK,不需要下载

IDEA是由Java编写的,为了保证其运行,内部是自带JDK的。IDEA 2021 及 之后的版本是自带Maven的: 视频连接: https://www.bilibili.com/video/BV1Cs4y1b7JC?p4&spm_id_frompageDriver&vd_source5534adbd427e3b01c725714cd…

LeetCode 105.从前序与中序遍历构造二叉树

题目描述 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,nul…

【Oracle】python调取oracle数据教程

目录 (1)安装python和相关库 1.python的下载和安装 2.python安装cx_Oracle库和pandas库 3.本机安装instantclient 数据库客户端 先安装instantclient 然后设置环境变量 (2)准备好连接Oracle数据库地址等五项信息 &#xf…

C++的演变与未来:编程艺术的持续进化

在计算机编程的演变历程中,C以其独特的魅力和强大的功能,一直占据着不可或缺的地位。从最初的面向对象编程,到如今的跨平台、高性能应用,C在不断地适应和推动着计算机技术的发展。本文将深入剖析C的演变过程,展望其未来…

深入探索 C++ 中 string 的用法:从基础到实践

C String 用法详解 C中的 std::string 是一个非常强大且灵活的类,用于处理字符串。std::string 类是C标准库中的一部分,它提供了丰富的成员函数来执行各种字符串操作,如连接、比较、查找、替换等。在本篇博客中,我们将深入探索 s…

张大哥笔记:学什么都不如学赚钱

很多人总是这样认为:好好读书,考上好学校,将来可以找到一份不错的工作,这样的思想观念,可能会导致你一辈子都无法实现财富自由。 财富的多少,和你的努力程度没有直接关系。我们可以清楚看到那些每天辛苦劳动…

【Linux 系统】进程信号 -- 详解

⚪前言 注意:进程间通信中的信号量跟下面要讲的信号没有任何关系。 一、从不同角度理解信号 1、生活角度的信号 你在网上买了很多件商品,在等待不同商品快递的到来。但即便快递没有到来,你也知道快递来临时,你该怎么处理快递&a…

《MySQL对库的基本操作》

文章目录 一、查看数据库列表查看数据库中的所有表想知道当前处于哪个数据库里 二、创建一个数据库三、删除一个数据库知道两个集1.字符集2.校验集修改数据库的字符集和编码集 不同的校验码对数据库的影响四、数据库的备份与恢复注意事项:备份数据库中的表 总结 一、…

HTTP/1.1、HTTP/2、HTTP/3 的演变

HTTP/1.1、HTTP/2、HTTP/3 的演变 HTTP/1.1 相比 HTTP/1.0 提高了什么性能?HTTP/2 做了什么优化?HTTP/3 做了哪些优化? HTTP/1.1 相比 HTTP/1.0 提高了什么性能? HTTP/1.1 相比 HTTP/1.0 性能上的改进: 使用长连接的…

Python 在windows环境下加密文件成.pyd格式

首先 pip install easycython然后打开在要加密的文件同一目录下cmd命令框,命令行里键入 easycython 你要加密的文件.py 最后会在目录下看见有个.pyd的文件,只保留这个文件,剩下的都删了,其他引用该文件的python文件该咋用咋用。…