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
本篇文章为转载,仅为方便学术讨论所用,不用于商业用途.由于时间较久,原作者以及原始链接暂时无法找到,如有侵权以及其他任何事宜欢迎跟我联系,如有侵扰,在此提前表示歉意.----------------- ...
随机推荐
- Servlet实现文件上传(深度)(二)
1.首先我们定义struts.properties的文件上传中的规则如下 struts.action.extension=action <!--以.action为我们提交的后缀名-->s ...
- Extjs4中的布局
布局用于定义容器如何组织内部子元素和控制子元素的大小.在一个应用程序中,作为定义容器的组织形式,布局是一个十分重要的组件.是显示单个子元素?还是垂直或水平显示多个子元素?这些均由布局来定义.并且布局将 ...
- 数据库ER图 PowerDesigner
一.概念数据模型概述数据模型是现实世界中数据特征的抽象.数据模型应该满足三个方面的要求:1)能够比较真实地模拟现实世界2)容易为人所理解3)便于计算机实现 概念数据模型也称信息模型,它以实体-联系(E ...
- laravel定时任务
原文链接:https://github.com/liebig/cron 感觉Cron只是帮你将很多需要定时执行的任务都归结在一个方法中,并且各自设定不同的时间,比较统一方便,但是在外部还是需要操作li ...
- POJ 2373 Yogurt factory
简单DP. 这周所用的实际花费是上一周的花费+S与这周费用的较小值. #include<cstdio> #include<cstring> #include<cmath& ...
- iOS开发——UIAlertController
iOS8之后,UIAlertView和UIActionSheet被干掉了,取而代之的是UIAlertController和UIAlertAction. UIAlertController有两种样式,一 ...
- 多线程的并发问题,lock用法
开启多个线程,每个线程中多次操作公共变量 using System; using System.Collections.Generic; using System.Linq; using System ...
- AdaBoost 算法原理及推导
AdaBoost(Adaptive Boosting):自适应提升方法. 1.AdaBoost算法介绍 AdaBoost是Boosting方法中最优代表性的提升算法.该方法通过在每轮降低分对样例的权重 ...
- Python 线程池的实现
import urllib2 import time import socket from datetime import datetime from thread_pool import * def ...
- maven 第一次运行报错
在大中国的网络环境下,使用一些国外的资源,是一件很痛苦的事情... 大概在好几个月以前,一个同事跟我说,没事的时候学习maven,现在公司项目都用这个做管理 还给了我电子书<Maven实战> ...