一、函数基本知识
 function语法:                                                                                                                                   function   [y_1,...,y_N] = myfun(x_1,...,x_M),                                                                                         其中[y_1,...,y_M]为输出量,myfun为函数名,(x_1,...,x_M)为函数输入量。
有效的函数名称字母字符开头,并且可以包含字母、数字或下划线。

注意事项:

注意事项一:函数的保存位置与命名规则

1、函数文件 (Function File)​

规则​: 只包含函数定义的函数文件中。文件的名称应与文件中其函数的名称一致。

       创建一个新的 .m文件,这个文件只包含一个函数的定义。这个文件的名字必须和函数的名字完全相同

 示例​:  定义了一个函数:function myFunction(input) ... end

              那么必须将这个函数保存为一个名为 myFunction.m的文件。

              当在命令行或其他脚本中调用 myFunction时,MATLAB 会自动去寻找 myFunction.m文件来执行。

代码演示1:简单加法函数

定义函数​(保存为 addNumbers.m):

function  sumResult = addNumbers(a, b)                  % ADDNUMBERS 计算两数之和
sumResult = a + b; 
end

调用函数​(在命令行或脚本中):

result = addNumbers(3, 5);           % 返回 8
disp(result);

代码演示2:多输入输出函数

定义函数​(保存为 circleCalc.m):

function [area, circumference] = circleCalc(radius)      % CIRCLECALC 计算圆的面积和周长
area = pi * radius^2;
circumference = 2 * pi * radius;
end

在其他.m的脚本文件中调用函数​:

[a, c] = circleCalc(2);                % 输出结果: a = 12.566,   c = 12.566

2、脚本文件 (Script File)

规则​: 包含命令和函数定义的脚本文件中。函数必须位于该文件的末尾。脚本文件不能与文件中的函数具有相同的名称。

示例:正确的脚本文件结构 (myScript.m)​

% ============ 主脚本代码部分 ============
% 这里是主要的执行逻辑

% 计算圆的面积和周长
radius = 5;
[area, circ] = calculateCircle(radius);      % 调用局部函数

fprintf('半径: %.2f\n', radius);
fprintf('面积: %.2f\n', area);
fprintf('周长: %.2f\n', circ);

% 可以继续添加更多脚本代码..

........

% ============ 局部函数部分 (必须放在末尾) ============
function [area, circumference] = calculateCircle(r)
% CALCULATECIRCLE 计算圆的几何属性
area = pi * r^2;
circumference = 2 * pi * r;
end

% 可以添加更多局部函数...
function volume = calculateSphere(r)
% CALCULATESPHERE 计算球体体积
volume = (4/3) * pi * r^3;
end

关键解释​:

文件命名​:脚本保存为 myScript.m(而非 calculateCircle.m

执行顺序​:MATLAB 从上到下执行,先运行主脚本,再定义函数

函数调用​:主脚本中可以调用 calculateCirclecalculateSphere

注意事项二:多函数与 end关键字的使用

规则​: “文件可以包含多个局部函数或嵌套函数。为提高可读性,可使用 end关键字来表示文件中每个函数的末尾。

  • 局部函数 (Local Functions)​​: 并列放在主函数或主脚本后面的多个函数。•

  • 嵌套函数 (Nested Functions)​​: 定义在另一个函数内部的函数。

示例 (函数文件中的多个局部函数)​​:

% 保存为 MyMath.m脚本文件
function mainOutput = MyMath(input)
output1 = addFive(input);
mainOutput = squareNumber(output1);
end

% 局部函数 1
function out = addFive(in)
out = in + 5;
end                           % 此处建议使用 end,如果是嵌套函数或脚本中则必须使用

% 局部函数 2
function out = squareNumber(in)
out = in * in;
end                            % 此处建议使用 end,如果是嵌套函数或脚本中则必须使用

二、matlab创建一个子函数,在主函数中调用该子函数

1.子函数必须与主函数位于同一个 .m 文件中,且定义在主函数之后。子函数的作用域仅限于该文件,外部无法直接调用

步骤 1:创建主函数与子函数(同一 .m 文件)​

% 主函数(文件保存为 mainFunction.m)
function [sum_result, product_result] = mainFunction(a, b)
% 调用子函数 calculateSum
sum_result = calculateSum(a, b); 

% 调用子函数 calculateProduct
product_result = calculateProduct(a, b); 
end

% 子函数 1:计算两数之和
function sum_val = calculateSum(x, y)
sum_val = x + y;
end

% 子函数 2:计算两数之积
function product_val = calculateProduct(x, y)
product_val = x * y;
end

步骤 2:调用主函数

在命令行或脚本中直接调用主函数:

% 调用示例
[sum_result, product_result] = mainFunction(3, 4);
disp(['和: ', num2str(sum_result)]);             % 输出 7
disp(['积: ', num2str(product_result)]);        % 输出 12

拓展:上面代码放在一个脚本中

      将文件重命名​(例如改为 myCalculator.m),​确保文件名不与内部的任何函数名相同。

% myCalculator.m (这是一个脚本文件)
% 主程序脚本代码
a = 3;
b = 4;
[sum_result, product_result] = mainFunction(a, b);
disp(['和: ', num2str(sum_result)]);    % 输出 7
disp(['积: ', num2str(product_result)]); % 输出 12

% --- 局部函数定义必须放在脚本代码的后面 ---
function [sum_result, product_result] = mainFunction(a, b)
% 调用子函数 calculateSum
sum_result = calculateSum(a, b); 

    % 调用子函数 calculateProduct
product_result = calculateProduct(a, b); 
end

% 子函数 1:计算两数之和
function sum_val = calculateSum(x, y)
sum_val = x + y;
end

% 子函数 2:计算两数之积
function product_val = calculateProduct(x, y)
product_val = x * y;
end

2.多文件调用(非子函数)

若需跨文件调用函数,需将函数保存为独立 .m 文件,并确保文件在 MATLAB 搜索路径中:

步骤1.​创建独立函数文件

% 文件:calculateSum.m
function sum_val = calculateSum(x, y)
sum_val = x + y;
end

步骤2.​主文件中调用

% 文件:mainScript.m
a = 3; b = 4;
result = calculateSum(a, b); % 直接调用外部函数

%这里可以调用前面的子函数

[sum_result, product_result] = mainFunction(3, 4);
disp(['和: ', num2str(sum_result)]);             % 输出 7
disp(['积: ', num2str(product_result)]);        % 输出 12

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/94369.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/94369.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/94369.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器初始化流程***

前言在云计算与自动化运维日益成熟的今天,快速、批量地部署服务器已成为常态。然而,一台新构建的云服务器或新安装的物理服务器,仅仅是一个可运行的操作系统内核,远未达到投入生产环境或开发测试的标准。一个缺乏标准化配置的“裸…

Python实现电商Excel读取进行可视化分析

目录专栏导读项目简介功能特性📊 数据处理功能📈 统计分析功能🎨 可视化功能📋 报告生成项目结构安装和使用环境要求安装步骤使用自己的数据依赖包说明输出文件说明静态图表(PNG格式)交互式图表&#xff08…

肌肉力量训练

健身一年多瘦了十几斤,没有像上次一样吃轻食哦。每天早晨跑步或者做力量训练,中午和晚上吃完饭遛遛弯,坚持下来就好了。 但力量训练一直没有请教练,自己也没查资料,算是瞎练吧。最近发现了一本好书,讲解如何…

微服务-27.配置管理-什么是配置管理

一.配置管理到目前为止我们已经解决了微服务相关的几个问题:微服务远程调用微服务注册、发现微服务请求路由、负载均衡微服务登录用户信息传递不过,现在依然还有几个问题需要解决:我们发现很多微服务中的配置文件里的配置都是重复的。修改编辑…

【RAGFlow代码详解-13】RAG 管道

管道架构概述 RAG 管道由多个处理阶段组成,这些阶段将文本内容转换为适合智能检索的结构化知识表示:文档到知识图谱工作流程 主要处理工作流程通过 run_graphrag 功能将单个文档块转换为统一的知识图谱:GraphRAG 处理方法 RAGFlow 支持两种不…

深度学习——模型训练

以Pytorch自带的手写数据集为例。我们已经构建了一个输入层(28*28),两个隐藏层(128和256),一个输出层(10)的人工神经网络。并且结合非线性激活函数sigmoid定义前向传播的方向。class…

使用Kiro智能开发PYTHON应用程序

文章目录使用Kiro智能开发PYTHON应用程序1. 什么是KIRO?2. 获取KIRO3. 安装KIRO4. 用KIRO开发智能应用程序6. 推荐阅读使用Kiro智能开发PYTHON应用程序 By JacksonML KIRO是AWS亚马逊云科技旗下的独立AI产品,是用来开发生产级应用程序的AI IDE。 本文简…

UNIX网络编程笔记:高级套接字编程12-19

IPv4与IPv6互操作性:技术解析与实践指南 在网络协议演进进程中,IPv4向IPv6的过渡是绕不开的关键阶段。尽管IPv6凭借海量地址、更优扩展性成为发展方向,但IPv4设备与网络的广泛存在,使得二者的互操作性成为保障网络平滑演进、业务持…

同类软件对比(一):Visual Studio(IDE) VS Visual Studio Code

文章目录前言一、Visual Studio(IDE)是什么?二、Visual Studio Code 是什么?三、两者的相同点四、两者的不同点五、实战选择建议总结前言 Visual Studio 和 Visual Studio Code,它们一个是微软旗下的老牌霸主&#xf…

数据结构初阶:详解单链表(一)

🔥个人主页:胡萝卜3.0 🎬作者简介:C研发方向学习者 📖个人专栏: 《C语言》《数据结构》 《C干货分享》 ⭐️人生格言:不试试怎么知道自己行不行 目录 顺序表问题与思考 正文 一、单链表 1.…

塞尔达传说 旷野之息 PC/手机双端(The Legend of Zelda: Breath of the Wild)免安装中文版

网盘链接: 塞尔达传说 旷野之息 免安装中文版 名称:塞尔达传说 旷野之息 PC/手机双端 免安装中文版 描述:忘记你所知道的关于塞尔达传说游戏的一切。在《塞尔达传说:旷野之息》中步入一个充满发现、探索和冒险的世界&#xff0…

【分享开题答辩过程】一辆摩托车带来的通关副本攻略----《摩托车网上销售系统》开题答辩!!

一、开题陈述 各位评委老师好,我是A同学。 本次我设计与实现的是基于ASP.NET的摩托车网上销售系统,该系统以 MySQL 为后台数据库,主要解决当前社会背景下用户线下看车购车困难的问题,同时顺应摩托车网络营销的发展趋势&#xff…

python + unicorn + xgboost + pytorch 搭建机器学习训练平台遇到的问题

1.背景前段时间,使用 python unicorn xgboost pytorch 写了一个机器学习训练平台的后端服务,根据公司开发需要,需具备两种需求:1. 可以本地加载使用;2.支持web服务,2. 使用本地加载使用2.1 问题针对第一…

Odoo 非标项目型生产行业解决方案:专业、完整、开源

概述您眼前的这张应用蓝图,是由 Odoo 官方金牌服务商——开源智造 (OSCG) 凭借多年在非标项目型制造领域的深厚积累,精心设计的 Odoo 解决方案核心流程图。它不仅体现了我们对行业复杂业务场景的深刻理解,更彰显了我们将先进的管理理念与强大…

OpenAI 开源模型 gpt-oss 是在合成数据上训练的吗?一些合理推测

编者按: OpenAI 首次发布的开源大模型 gpt-oss 系列为何在基准测试中表现亮眼,却在实际应用后发现不如预期? 我们今天为大家带来的这篇文章,作者推测 OpenAI 的新开源模型本质上就是微软 Phi 模型的翻版,采用了相同的合…

Linux / 宝塔面板下 PHP OPcache 完整实践指南

Linux / 宝塔面板下 PHP OPcache 完整实践指南 OPcache 是 PHP 官方提供的字节码缓存扩展,通过缓存 PHP 脚本的编译结果,提高 PHP 执行效率。本文讲解从 检测 → 开启 → 使用 → 清理 → 排查问题 的全流程,同时针对宝塔面板界面不实用或无法…

Linux(从入门到精通)

Linux概述 Linux内核最初只是由芬兰人林纳斯托瓦兹1991年在赫尔辛基大学上学时出于个人爱好而编写的。 Linux特点 首先Linux作为自由软件有两个特点:一是它免费提供源代码,二是爱好者可以根据自己的需要自由修改、复制和发布源码 Linux的各个发行版本 Linux 的发行版说简单…

链表相关题目---19、删除链表的倒数第N个节点

题目链接:删除链表的倒数第N个节点 这道题 很常规的思路就是 先拷贝两次头结点 然后一个先走N步 然后同时开始走,直到先走N步的节点为空后,就停止,此时另一个没提前走的节点的下一个就是要删除的节点。不过需要注意的是&#xff0…

Vue工具类使用指南:实用函数与全局组件安装

概述在Vue项目开发中,我们经常需要一些通用的工具函数来处理路径转换、链接判断、数据格式化等任务。本文将介绍一个实用的Vue工具类,包含多种常用功能,并演示如何在项目中使用它们。工具函数详解1. 路径转驼峰命名import { pathToCamel } fr…

​Visual Studio + UE5 进行游戏开发的常见故障问题解决

从零开始,学习 虚幻引擎5(UE5),开始游戏开发之旅! 本文章仅提供学习,切勿将其用于不法手段! 有些项目在 Visual Studio 的 Unreal Engine 集成配置界面中,涉及 ​Unreal Engine 与 V…