Matlab程序设计(六)----创建函数(function)

2023-11-06

本部分Matlab中的函数创建非常重要,主要分为三个小部分:

(本部分主要参考了Matlab文件的讲述:https://ww2.mathworks.cn/help/matlab/function-basics.html)。

一、函数基本知识

function语法:function [y1,...,yN] = myfun(x1,...,xM),其中[y1,...,yN]为输出量,myfun为函数名,(x1,...,xM)为函数输入量。

有效的函数名称以字母字符开头,并且可以包含字母、数字或下划线。

三个小注意事项:

注意事项一:可以将函数保存在以下位置:

1、只包含函数定义的函数文件中。文件的名称应与文件中其函数的名称一致。

2、包含命令和函数定义的脚本文件中。函数必须位于该文件的末尾。脚本文件不能与文件中的函数具有相同的名称。R2016b 或更高版本的脚本中支持函数。

注意事项二:文件可以包含多个局部函数或嵌套函数。为提高可读性,可使用 end 关键字来表示文件中每个函数的末尾。以下情况下需要 end 关键字:

文件中有任意函数包含嵌套函数。

该函数是脚本文件内的局部函数。

注意事项三:

需要在代码文件中创建函数

下面是示例部分:

(1)创建仅包含一个输出的函数

在命令行中调用函数average

(2)脚本文件中创建函数

(3)包含多个输出的函数

(4)函数文件中的多个函数

注意事项:

局部函数仅可供同一文件中的其他函数使用。

函数只能在文件中创建,不能在命令行中创建。

有效的函数名称以字母字符开头,并且可以包含字母、数字或下划线。

两种创建方式:在脚本中仅有函数命令,需要在命令行调用函数;在脚本中既有函数命令还有函数的调用命令,那么直接保存完脚本文件后,点击运行或者在命令行中输入脚本文件名称,然后点击enter。

二、在编译器中运行函数

在名称为 myfunction.m 的程序文件中创建函数。

function y = myfunction(x)
y = x.^2 + x;

键入要运行的代码替换为允许运行函数的表达式。

y = myfunction(1:10)

也可以在同一行输入多条命令,例如

x = 1:10; y = myfunction(x)

对于更复杂的多行命令,可创建单独的脚本文件,然后运行脚本。

三、函数类型

(1)文件中的局部函数和嵌套函数

程序文件可以包含多个函数。局部和嵌套函数可用于将程序分为更小的任务,使读取和维护代码变得更容易。

在仅包含函数定义的函数文件中,局部函数可以任意顺序出现在文件中主函数的后面。在包含命令和函数定义的脚本文件中,局部函数必须位于文件末尾。

例如,创建一个名为 myfunction.m 的函数文件,其中包含主函数 myfunction 以及两个局部函数 squareMe 和 doubleMe

可以从命令行或另一程序文件中调用主函数,但局部函数仅适用于 myfunction,可以看到主函数显示黄色。

尤其需要注意的是:局部函数和嵌套函数在文件中的位置。

(2)子文件中的私有函数:

与局部或嵌套函数一样,私有函数仅供特定位置的函数访问。但是,私有函数与可以调用它们的函数不在同一个文件中。它们位于名称为 private 的子文件夹中。仅 private 文件夹紧邻的上一级文件夹内的函数可使用私有函数。使用私有函数将代码分割为不同的文件,或在多个相关函数间共享代码。

(3)无需创建文件的匿名函数:

只要函数包含一个语句,匿名函数即允许您定义该函数而不必创建程序文件。匿名函数通常用于定义数学表达式,然后使用 MATLAB® 功能函数(即接受函数句柄用作输入的函数)基于某个值范围计算该表达式。

例如,以下语句为匿名函数创建名称为 s 的函数句柄:

s = @(x) sin(1./x);

该函数具有一个输入 x@ 运算符创建函数句柄。

可以使用该函数句柄针对特定值计算函数,例如

也可以将该函数句柄传递给在某一值范围内计算的函数,例如 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matlab程序设计(六)----创建函数(function) 的相关文章

  • 网易游戏测试开发,2023届秋招面经

    一面 技术面 40min 三个面试官 一个负责记录 另两个负责问问题 常规问题 自我介绍 询问简历上的项目经验 项目中遇到的难点是什么 简单介绍一下之前笔试题目的算法思想 谈谈这个题目 基础问题 1 数据结构 怎样打印出全排列 2 数据结构
  • 递归及递归的简单运用之4种方法解斐波那契数列

    什么是递归 若一个对象部分的包含自己或用它自己给自己定义 那么我们说这个对象是递归的 若一个过程直接或间接的调用自己 那么这个过程是递归的 递归的思想是把问题分解为规模更小具有与原问题相同解法的子问题 因此可以让我们思考的方式更加简单 程序
  • 《游戏编程》第一部 基础篇

    游戏编程 第一部 基础篇 目录 零 基础篇的目的 一 游戏的动画原理 二 基于动画原理的提高 三 游戏的基石 窗口 的建立 四 游戏制作利器 引擎 的选择文章内容 零 基础篇的目的 有了一个目标之后 往往人们比较有信心和动力 所以 我重新修
  • 深度学习Caffe实战笔记(1)环境搭建

    1 环境搭建 从知道深度学习开始 就一直想学习使用caffe 碍于各种事情一直没有如愿 这几天终于找了个时间搞了一下 打算把学习的过程整理成笔记 包括环境搭建 跑车牌识别数据 跑mnist数据 用Alexnet跑自己的数据 用Siamese
  • oracle分区

    用列做分区 分区原则是列的内容 create table custaddr id varchar2 15 byte not null areacode varchar2 4 byte partition by list areacode p
  • 【Google Drive 存储空间不够了怎么办】

    在进行深度学习的时候往往要将数据集存储在Google Drive上面 但是Google Drive的免费空间只有15G 怎么呢 因为别人有在Google Drive上的数据集 可以直接右键点击Short Cut 相当于在本地文件夹创建了一个
  • Idea整合Maven安装及配置教程(图文详解)

    目录 友情提醒 第一章 Maven概述 1 1 Maven是什么 1 2 Maven进行构建 build 的主要环节 第二章 Maven的下载安装和配置 2 1 Maven的下载 2 2 Maven环境变量配置 2 3 Maven文件set
  • mysql-redis事务的比较

    mysql redis事务的比较 最近刚好回去看redis的源代码 不得不说这个源代码写的真心不错 很有味道 刚好之前系统学了MySQL 于是就到了和redis进行对比作为本周博客主题 mysql acid 提到mysql的事务 trans
  • vba:inputbox

    inputbox函数与方法 1 区别一 外观区别 InputBox 函数 在一对话框来中显示提示 等待用户输入正文或按下按钮 并返回包含文本框内容的 String Application InputBox 方法 显示一个接收用户输入的对话框
  • 桌面路径改到D盘的目录下

    桌面路径改到D盘的目录下 首先在你的D盘先创建一个desk文件夹 然后在左边这里找到桌面 点击右击 属性 然后点击位置 把这个位置修改为刚才你在D盘所创建的文件夹的位置 这样就大功告成了 似不似so easy
  • MyBatis关系映射

    文章目录 前言 一 一对一映射 1 1 创建实体 1 2 xml配置 二 一对多映射 2 1 创建实体 2 2 resultMap配置 2 3 测试 三 多对多映射 3 1 创建实体 3 2 resultMap配置 3 3 测试 前言 My
  • 6-urdf

    URDF Unified Robot Description Format 统一机器人描述格式 基本概念 1 urdf 文件 定义机器人的结构 2 用于机器人的仿真 可视化 tf 3 ROS 的中包含一个urdf包 用来解析urdf文件 描
  • CSDN为什么会发展社区?看看官方怎么说

    文章目录 课前小差 23年可兼收名利 博客之星 红包活动 相聚线下 妙笔生花 原力计划 个人定位 为什么要发展社区 写在最后 课前小差 哈喽 大家好 我是几何心凉 这是一份全新的专栏 唯一得到CSDN王总的授权 来对于我们每周四的绿萝时间
  • 乐观锁实现接口幂等性_Elasticsearch系列---并发控制及乐观锁实现原理

    概要 本篇主要介绍一下Elasticsearch的并发控制和乐观锁的实现原理 列举常见的电商场景 关系型数据库的并发控制 ES的并发控制实践 并发场景 不论是关系型数据库的应用 还是使用Elasticsearch做搜索加速的场景 只要有数据
  • Qt中的项目类型(二)

    使用Qt进行软件开发 第一个要考虑的问题就是为需要开发的软件 选择一个合适的Qt项目类型 Qt中的项目类型有 Application 应用 项目 项目编译结果是可执行程序 Library 库 项目 项目编译结果是静态库或动态库 其他项目 辅
  • 登录功能使用Base64进行加密(解密) ---jsp页面以及servlet页面。(废了。不安全。。。。。)

    使用Base64在服务器端进行加密 String 加密后的字符串 Base64 getEncoder encodeToString 需要加密的字符串 getBytes byte 解密后的byte数组 Base64 getDecoder de
  • Markdown没能生成表格问题

    小白刚使用MD时不知道怎样弄出表格 刚开始使用Markdown 的时候 不知道怎样转换成表格 看了网上的 直接用下面的方法就可以了 但是为什么我的就是不出现表格呢 dog bird cat foo foo foo bar bar bar b
  • 微信小程序模板消息接口下线了,不用慌,调用统一服务消息接口来实现相同功能

    1 前言 做过微信开发的应该都有一点感触 就是他的开发文档不是一成不变的 接口有时候会被下线 但也不是一下子就不能用了 一般会兼容旧接口 然后提醒你使用新接口有更多好处 如果接口真的直接下线了 也会提供另一种能够实现相同功能的接口给你替换
  • Mysql千万级别数据批量插入只需简单三步

    http blog csdn net u011277123 article details 61914773 T自由职业者 2017 03 05 09 40 第一步 配置my ini文件 文件中配置 bulk insert buffer s

随机推荐