当前位置: 首页 > news >正文

MATLAB中函数的详细使用

一、函数基本知识
 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.dtcms.com/a/352575.html

相关文章:

  • Linux-孤儿进程和僵死进程
  • RAG中使用到的相关函数注释——LangChain核心函数
  • tracebox工具使用
  • LKT4202UGM耗材防伪安全芯片,守护您的消费电子产品
  • 从串口到屏幕:如何用C#构建一个军工级数据实时监控
  • JUC之synchronized关键字
  • Dify 从入门到精通(第 57/100 篇):Dify 的知识库扩展(进阶篇)
  • 8.26学习总结
  • 在 C# 中使用 Consul 客户端库实现服务发现
  • 卷积操作现实中的意义
  • 发力低空经济领域,移动云为前沿产业加速崛起注入云端动能
  • 微服务-24.网关登录校验-实现登录校验
  • Linux系统日志分析与存储
  • 机器学习:前篇
  • 从行业智能体到一站式开发平台,移动云推动AI智能体规模化落地
  • 产品经理操作手册(3)——产品需求文档
  • Duplicate Same Files Searcher v10.7.0,秒扫全盘重复档,符号链接一键瘦身
  • 【软件测试面试】全网最全,自动化测试面试题总结大全(付答案)
  • 告别出差!蓝蜂物联网网关让PLC程序远程修改零延迟
  • 二、JVM 入门 —— (四)堆以及 GC
  • 渗透测试术语大全(超详细)
  • C++ STL 顶层设计与安全:迭代器、失效与线程安全
  • 【C++游记】栈vs队列vs优先级队列
  • 算法编程实例-快乐学习
  • 随机森林实战:在鸢尾花数据集上与决策树和逻辑斯蒂回归进行对比
  • AI安全监控与人才需求的时间悖论(对AI安全模型、AI安全人才需求的一些思考)
  • AIDL和HIDL的AudioHal对比
  • Maya绑定基础: FK 和 IK 介绍和使用
  • lottie动画动态更改切图添加事件
  • 五自由度磁悬浮轴承:精准狙击转子质量不平衡引发的同频振动