matlab 子函数的使用
本文参考了该篇博客:http://www.cnblogs.com/MarshallL/p/4048846.html
对其进行学习,为我所用吧。
一、
在matlab的函数定义中,如果函数如果函数较长或较多,往往可以将各函数分别写在多个.m文件中,但有时函数可能很短,就几行,可能希望将多个函数定义放在同一个.m文件中,这里就存在一个子函数的定义问题。
对于函数文件,一个M文件只能定义一个主函数,即第一句function所定义的函数,而且整个M文件在外部使用时候表现出来的也只有这一个函数(主函数名和函数M文件名保持一致)。
在matlab中一个.m文件中可以有多个的子函数,可以互相调用,下面结合一个简单的例子来分析。
格式:
function MainFunction
%主函数内容
function SubFunction1
%子函数内容
end
function SubFunction2
%子函数内容
end
function SubFunction3
%子函数内容
end
end
自定义函数:mathTest.m
function [sum_result,sub_result,mul_result] = mathTest(x,y) %主函数
sum_result=sum(x,y); %子函数的调用
sub_result=sub(x,y);
mul_result=mul(x,y); %子函数定义:
function result=sum(x,y) %+
result = x+y; function result=sub(x,y) %-
result = x-y; function result=mul(x,y) %*
result = x*y;
调用该函数M文件:
%本函数测试M文件主函数调用(子函数被隐藏)
clc;clear;
a=;b=; [sum_result,sub_result,mul_result] = mathTest(a,b); %主函数调用
fprintf('%d + %d的和是:%f\n',a,b,sum_result);
fprintf('%d - %d的差是:%f\n',a,b,sub_result);
fprintf('%d * %d的积是:%f\n',a,b,mul_result);
第二、看那篇博客发现一个有用的功能,实际是可以将以上文件:自定义函数文件和调用文件合在一起的(虽然不推荐)
这里我们定义了一个没有输入没有输出的函数该函数将作为主函数,而其他的函数均为子函数,由主函数调用子函数,而子函数间是可以互相调用,但不能调用主函数。这时的m文件不需要任何输入,调用时可以直接点运行m文件的快捷键,或者在命令框中输入m文件名然后回车运行
举例 脚本文件:mathMain.m
%本函数测试M文件主函数调用(子函数被隐藏)
function [] =mathMain() %不能省略
clc;clear;
a=;b=;
[sum_result,sub_result,mul_result] = mathTest(a,b); %主函数调用
fprintf('%d + %d的和是:%f\n',a,b,sum_result);
fprintf('%d - %d的差是:%f\n',a,b,sub_result);
fprintf('%d * %d的积是:%f\n',a,b,mul_result);
%结束
%----------------------------------------------------------------
function [sum_result,sub_result,mul_result] = mathTest(x,y) %主函数
sum_result=sum(x,y); %子函数的调用
sub_result=sub(x,y);
mul_result=mul(x,y); %子函数定义:
function result=sum(x,y) %+
result = x+y; function result=sub(x,y) %-
result = x-y; function result=mul(x,y) %*
result = x*y;
其实,上面这个代码中,
mathTest(),
sum(x,y)
sub(x,y)
mul(x,y)都可以看作子函数,只不过mathTest对其它函数进行了调用,那么也就是所谓的嵌套功能
matlab 子函数的使用的更多相关文章
- matlab中同一文件定义子函数的方法
在matlab中一个.m文件中可以有多个的子函数,但仅能有一个主函数,并且M文件名必须和主函数相同在一个m文件中通常有两种定义子函数的方法: 1.嵌套定义 myfunc1会和主函数共享变量名.这种情况 ...
- matlab调试时子函数断点不起作用
matlab调试代码时总是遇到这样一个奇怪的问题,就是当我在主程序(.m脚本)中调用子函数并在子函数中设置断点,然后开始调试运行主程序... 发现主程序直接运行到结束而并没有在调用子函数的时候在所设置 ...
- Matlab匿名函数,子函数,私有函数,重载函数,eval和feval函数
匿名函数,子函数,私有函数等函数类型 匿名函数: 匿名函数没有函数名,也不是.m文件,只包含一个表达式和输入输出参数. Fxy=@(x,y)x.^y+3*x*y x,y为输入输入参数,Fxy为函数名 ...
- 【MATLAB】画信号频谱的子函数
输入信号序列和采样率,该子函数可以画出该信号的频谱图. function [f,spec,NFFT]=spec_fft_plot(sample,L,Fs) % 输入数据说明: % sample:信号序 ...
- Matlab中函数定义方法
Matlab自定义函数的六种方法 n1.函数文件+调用函数(命令)文件:需单独定义一个自定义函数的M文件: n2.函数文件+子函数:定义一个具有多个自定义函数的M文件: n3.Inline:无需M文件 ...
- MATLAB—M函数文件
文章目录 一.M文件 1.脚本文件和函数文件的区别 二.M函数文件 1.创建方法 2.文件形式 2.函数形参及注释 3.函数的调用 4.函数变量 5.主函数.子函数 三.函数句柄 一.M文件 首先,要 ...
- MyEclipse调用Matlab打包函数
本文部分内容参考了http://www.360doc.com/content/15/1103/16/1180274_510463048.shtml 一.检查Java环境 对于已经装上JAVA环境的计算 ...
- Shell 语法 if 、 case 、for 、 while、 until 、select 、repeat、子函数
if语法 : if [ expression ] then commandselif [ expression2 ] then commandselse commandsfi ...
- Matlab图像处理函数:regionprops
本篇文章为转载,仅为方便学术讨论所用,不用于商业用途.由于时间较久,原作者以及原始链接暂时无法找到,如有侵权以及其他任何事宜欢迎跟我联系,如有侵扰,在此提前表示歉意.----------------- ...
随机推荐
- CodeForces 625D Finals in arithmetic
神奇的构造题,我的思路比较奇葩.搞了好久,看到WA on 91我绝望了,然后自己造数据,找到了错误,总算是AC了,现在是凌晨0:24分,看到AC之后,感动China! 我写的代码无比的长.....应该 ...
- oracle查看表空间物理文件的名称,路径及大小
select tablespace_name, file_id,file_name,round(bytes/(1024*1024),0) total_space from dba_data_files ...
- 【转】C++中this指针的用法详解
1.this指针的用处 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果.this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象 ...
- 20、手把手教你Extjs5(二十)模块Grid的多列表方案
对于有很多字段的模块在一个grid中显示所有的字段,会显得很臃肿,对于不同的用户其侧重的字段类型也不尽相同,因此就有必要为Grid的列表设计多个方案.在这个自定义系统进行设计的时候,我已经将这部分内容 ...
- 学习vi(1)
原文地址:http://www.gentoo.org/doc/zh_cn/vi-guide.xml#doc_chap2 1. 新手上路 介绍 本教程将会向你展示如何使用vi──一个强大的可视化编辑器 ...
- Java中的 List Set Map
类层次关系如下: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └W ...
- MongoDB和Java-PHP
一.java操作mongoDB 配置环境: 1.下mongodb JDBC驱动mongo-java-driver-3.2.2.jar,并包含在classpath中 步骤: 1.连接数据库 // 连接到 ...
- Jconsole连接远程服务器
本地服务器.win7,安装JDK8 远程服务器:centos6.5 ,tomcat7,java8 配置方法: 1)修改远程服务器的~/tomcat/bin/catalina.sh 文件 在 # -- ...
- C语言-知识点及学习路线
最近进行了为期两周的C语言培训,把几年前学过的C语言又重新学习了一遍,然后根据学习的内容和过程,总结了一下学习路线.这是基本的C语言学习路线,相当于编程语言类的基础,再根据自己究竟是要做单片机开发,还 ...
- intel Xeon(R) CPU E5-2650 v2 性能测试报告
intel Xeon(R) CPU E5-2650 v2 ...