-
2020-11-15 11:22:01
Matlab函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Matlab提供了许多内建函数,比如disp()。但你也可以自己创建函数,这被叫做用户自定义函数
matlab
disp(‘hello world’)
hello world
总的来说,自定义函数分为两步:即定义函数和调用函数。定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:函数代码块以 function关键词开头,后接输出变量和函数标识符名称和圆括号 ()。
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以end结束。
函数需要定义在脚本文件(*.m)中运行,不可以在命令窗口中临时创建。语法
Matlab定义函数需要使用function关键字,一般格式如下:matlab
function 输出变量 = 函数名(输入变量)
函数体
end
这里的输入变量和输出变量都可以根据实际情况缺省。实例
创建一个函数,用来输出“hello world!” ,步骤如下:新建一个脚本,命名为eg1.m
matlab
test();
function test()
disp(‘hello world!’)
end
点击顶部菜单的运行按钮,即可在命令窗口输出:matlab
eg1
hello world!
更复杂一点的应用,我们让函数带上输入变量和输出变量:matlab
s = calc_area(4,5);
function s = calc_area(w,h)
s = w*h;
disp([‘area=’,num2str(s)]);
end
以上实例输出:matlab
eg2
area=20
输入变量缺省
有时候,输入变量的个数不确定,但是又想将不同个数情况统一到一个函数里,即输入变量有缺省时,可以利用nargin来判断,然后给出对应的输出。例如:matlab
out(1)
out(1,2)
out(1,2,3)
function out(a,b,c)
if nargin == 1
disp(a)
elseif nargin == 2
disp([a,b])
elseif nargin == 3
disp([a,b,c])
end
end
上面的实例将会得到:matlab
eg5
11 2 1 2 3
可以看到,当输入不同输入变量个数时,会找到对应个数下的执行代码,返回相应的内容。
当然这种做法也存在弊端,当变量个数太多时,要写很多个判断;这种情况下可以尝试inputParser,这里我就不多解释了,有兴趣可以了解下。
函数调用
函数基本结构完成后,进行调用时,存在两种方法:直接在函数所在脚本文件内调用(上面的例子就是这种情况);
函数定义与调用分开,各自存为一个脚本,运行调用脚本。
法一:脚本内调用函数
直接在函数脚本内调用
直接在函数脚本内调用如上图所示,调用函数在前,定义函数在后,点运行即可得到输出。
法二:函数脚本独立,另外写代码调用
调用函数
调用函数定义函数
定义函数如上图所示,函数脚本和调用函数的脚本分开了,保存在同一路径下。
在第二种方法下,也可以在命令窗口直接调用所写的函数:
命令窗口调用函数
命令窗口调用函数这种调用与上面本质上是一样的,都是首先找到以函数名命名的脚本文件,然后再执行函数内部代码块,返回结果。在这里必须注意函数脚本名字要与函数名一致。
事实上,为了让编程变得系统化,模块化,我们不建议你采用第一种方法去写代码,因为这样不利于分析和维护代码。
而采用后面一种方法时,我们可以定义很多个函数,然后在其他脚本里调用它们,这样形成了一种模块化的关系。我们在分析代码时,注意力可以集中到主程序上,思路将更加清晰。
输出值缺省调用
在matlab的函数中,可以选择性地获取所返回的变量列表值,下面给出实例:matlab
default = out()
[a,,]= out()
[,b,] = out()
[,,c] = out()
function [a,b,c] = out()
a = 1;
b = 2;
c = 3;
end
上述实例输出结果:matlab
eg4
default =
1
a =
1
b =
2
c =
3
可以看到,函数默认以返回的第一个变量为输出值;若想得到返回的某个值时,用变量接住,对于不需要的值,则需要用~占位,但不接收这个值,这样做的目的就是为了保证输出的序号能够匹配到。
更多相关内容 -
matlab自定义函数与调用
2022-07-07 20:54:35在matlab中如何自定义一个函数并进行调用?在matlab中如何自定义一个函数并进行调用?
定义一个加法函数并进行调用
1.创建一个主m文件,命名为任意名称,再创建一个名为函数名称的m文件,与主文件放在一个文件夹中,本例中函数名为jisuan
2.在计算中自定义函数功能,固定的函数格式为:function result=函数名(参数1,参数2,…)。如图所示,该函数的功能是求参数a与参数b之和。其中c表示返回结果,在调用时可以任意命名,不影响最后结果,jisuan为函数名称,a为参数1,b为参数2,在调用时可以任意命名,不影响最后结果。
3.在主文件里进行调用。定义变量a=2,定义变量b=3,想要求a和b之和f,需要调用函数f=jisuan(a,b),结果为5
summary:函数功能在调用时只要保证函数名称不变即可,剩余名称均可变动,保证位置对应即可
-
matlab函数定义详解
2014-06-28 16:23:49但凡经过编程熏陶的人,在学习其他一门陌生... 在数学中,定义一个函数,我们需要明确定义域、值域、表达式。在matlab中,则对应为输入参数,输出参数,函数体。实际上,matlab支持多输入多输出,函数的返回值可以为一但凡经过编程熏陶的人,在学习其他一门陌生的编程语言时,往往会与已经学过的语言相比较。而语法的比较往往是情不自禁的。在matlab中,函数的概念或许没有其他语言那么广泛,特性没有那么丰富,但基本的功能都已具备。
在数学中,定义一个函数,我们需要明确定义域、值域、表达式。在matlab中,则对应为输入参数,输出参数,函数体。实际上,matlab支持多输入多输出,函数的返回值可以为一个向量,矩阵,或者多个元素。为了让函数可以调用,需要对函数进行命名。
即包含:
- 输入参数
- 输出参数
- 函数名
- 函数体
我们以求两个数的最小公倍数,最大公约数为例,来演示matlab的函数的定义。打开matl,选择file->new->M-file
在弹出的窗口中,输入以下代码
-
matlab的函数调用和参数传递
2021-04-20 02:00:32函数调用在一个m文件中,可以定义多个函数,但是文件名一定要与第一个函数(主函数)一致,该文件中其他函数则为本文件的私有函数,外部不可访问(可以通过参数调用的方法访问,下面会描述)。例如在一个程序中,创建一...函数调用
在一个m文件中,可以定义多个函数,但是文件名一定要与第一个函数(主函数)一致,
该文件中其他函数则为本文件的私有函数,外部不可访问(可以通过参数调用的方法访问,下面会描述)。
例如在一个程序中,创建一个fig后,会生成这样一个m文件:
function varargout =febirdfun(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @febirdfun_OpeningFcn, ...
'gui_OutputFcn', @febirdfun_OutputFcn, ...
'gui_LayoutFcn', [], ...
'gui_Callback', []);
if nargin &&
ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
解析 一下这个主函数:首先 gui_State是一个结构,指定了figure打开和输出函数,
开始
gui_CallBack为空,如果输入参数个数不为0,接下来将输入第一个参数传递给gui_State.callback。
接下来用交给 gui_mainfcn函数处理,gui_mainfcn 根据gui_State和传入参数
来确定是执子函数,还是打开 fig 文件和运行 OpeningFcn和OutputFcn。
如过 gui_Callback为空,那么就运行打开主窗口fig文件,否则,调用子函数
这个函数的作用有:
1.当输入不带参数的时候,能够打开fig文件,并且初始化控件
2.当指定需要调用的函数名时,可以作为其他控件callback使用 (实则调用同文件中的子函数)
例如,在某一个控件的 callback 里面这样写:(febrdfun为主函数)
febirdfun("@push_button_Callback",gcbf,[])
这样的调用就可以调用文件里面的子函数。
当然也可以使用其他文件里面的函数作为callback,不过那样的话,数据传递会麻烦一些。
下面看figure Openning Function
%================================
function Main_OpeningFcn(hObject, eventdata, handles,
varargin)
handles.output = hObject;
% 通常在这里面定义自己的数据结构例如
s=struct("P1",v1...
"P2",v2);
handles.MyStruct=s;
% 更新handles数据结构 非常重要!!
guidata(hObject, handles);
%================================
function varargout = Main_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
这个函数是输出返回值的定义
注意: matlab 中,function 对应的 end 可以没有,但是随着版本的更新,end将会被要求。
数据传递
在matlab GUI程序中进行值传递经常使用的两种方法:
1.利用主函数 的 handles 数据结构传值
例如在某一个图像窗口句柄 中有一个对象 handles(可以定义自己的数据结构)
那么在一个子Callback函数中,可以通过handles传递数据:
function sliderbar1_Callback(hObject,eventdata,handles)
%% eg1
v1=get(hObject,'value');
obj=handles.Text1 %直接定位 Tag 为 Text1的控件
set(obj,'value',v1);
%% eg2
handles.MyStruct.P1=v1; % 更改handles中的数据
guidata(hObject,handles); %更新 handles !!重要
end
2.利用控件的 UserData 来传值
每一个控件一般都有一个属于自己的自定义域,userData,你可以定义这样一个域用来保存自己的数据,例如在定义 timer 的
TimerFcn中
t1=timer('TimerFcn',{@Timer1Fcn},'ErrorFcn',@Timer1ErrorFcn},'Period',1.0,'ExecutionMode','fixedrate');
t1.UserData=handles.MyStruct;
这里 Timer1Fcn的调用看似没有传入任何参数,实际上此函数的定义一定要有至少两个参数
function Timer1Fcn(obj,eventata)
obj.UserData=XXXXX;%可以这样共享数据
end
当然Timer定义的时候允许这样传递一个参数,当然这样也可以进行传值.
t1=timer('TimerFcn',{@Timer1Fcn,handles},'ErrorFcn',{@Timer1ErroFcnr,handles},'Period',1.0,'ExecutionMode','fixedrate');
以上内容源自百度空间...
-
3.8 matlab函数参数与变量的作用域
2021-12-06 18:49:12只要在函数文件中利用这两个变量就可以准确地知道这个函数文件被调用时的输入输出参数个数,从而来决定函数该如何进行处理。 %定义test.m函数 function fout = test(a,b,c) if nargin == 1 fout = a; elseif nargin... -
MATLAB循环和函数定义,调用
2021-03-03 18:39:52九天学会Java,第五天,函数定义函数调用 变量和数据类型,赋值和输出 算术运算 选择结构 循环结构 函数定义,函数调用 变量作用域 栈,程序运行的基石 面向对象 异常处理 语言提供的公用包 什么是函数,为什么有函数,... -
Matlab中ode函数调用
2021-04-18 02:56:11函数功能编辑本段回目录ode是专门用于解微分方程的功能函数,他有ode23,ode45,ode23s等等,采用的是Runge-Kutta算法。ode45表示采用四阶,五阶runge-kutta单步算法,截断误差为(Δx)3。解决的是Nonstiff(非刚性)的常... -
在matlab中定义函数添加@(x)——匿名函数
2021-04-18 15:27:00f=@(x)acos(x)表示 f 为函数句柄,@是定义句柄的...扩展资料匿名函数它是matlab中定义的一种函数形式,出现在matlab中,匿名函数不以文件形式驻留在文件夹上;他的生成方式最简捷,可在指令窗或任何函数体内通过... -
Matlab调用外部库函数步骤和注意事项
2021-04-22 00:00:43我的异常网» 编程»Matlab调用外部库函数步骤和注意事项Matlab调用外部库函数步骤和注意事项www.myexceptions.net网友分享于:2015-05-26浏览:0次Matlab调用外部库函数方法和注意事项在MATLAB环境下访问外部函数的... -
matlab函数
2015-05-16 21:42:19matlab常用指令和函数.doc常用指令和函数 -
Shell 函数定义与调用
2021-04-20 05:00:09linux shell 可以用户定义函数,然后在 shell 脚本... /bin/bash# 函数定义sum(){return $(($1+$2))}echo now please input a num:read numecho please input another num:read num_#函数调用sum $num $num_echo "Th... -
第四章 Matlab函数.ppt
2021-12-11 16:55:59适合初学者,入门必看 -
matlab class()函数类定义技巧
2021-04-18 08:46:14私有方法的作用域子限于list这个类中,而不能够被MATLAB命令行调用,或者被上一层类的方法调用。 (3) 辅助函数 在设计类的时候,有些工作需要由;一些特定的函数来完成,但这些函数并不一定直接对类的对象操作,这些... -
Matlab调用外部库函数方法和注意事项
2021-04-18 03:51:53在MATLAB环境下访问外部函数的共享库文件,必须首先把该库文件加载到内存中。一旦加载成功,就 能直接在MATLAB中直接请求关于函数的任何信息。而当不再需要该库时,就应当及时把库文件从内存 中卸载以节省内存开销。... -
Python定义函数功能与用法实例详解
2020-12-31 04:37:42然后要使用这一大串代码的时候,就调用这个我们自己创造的函数,输入自变量,然后会返回给我们因变量。 2.函数的定义 在Python中,对应数学函数的自变量和因变量的值,叫做参数和返回值。 用def来定义一个函数,下面 -
Matlab创建文件、function文件和函数调用
2021-04-18 06:23:29目录一、建立文件二、函数调用二、函数句柄三、匿名函数想查找相关内容也可在页面按ctrl+F搜索文字一、建立文件新建脚本,保存后可运行,后缀为.m 二、函数调用创建ffib.m文件,编写求Fibonacci数列的函数function... -
MATLAB嵌套函数
2021-02-01 03:50:28嵌套函数的定义嵌套函数,即nested function,就是嵌套在函数体内部的函数。嵌套函数可以出现在一个函数体内部的任何位置,开始以function声明,结束的时候加上end。需要说明的是包含有嵌套函数的函数,无论它是... -
comsol与matlab连接使用学习笔记 3 matlab外部函数与参数化扫描的综合应用
2021-12-18 20:21:25通过matlab实现参数扫面与定义域内材料属性分布 -
matlab函数大全word版方便查阅-matlab函数.doc
2019-08-13 03:52:23matlab函数大全word版方便查阅-matlab函数.doc matlab函数.doc -
通过定义 MATLAB 函数重用 MATLAB 代码
2021-04-19 07:58:40通过定义 MATLAB 函数重用 MATLAB 代码Stateflow® 图中的 MATLAB® 函数是一个图形元素,您可以用它来编写易于通过调用内置 MATLAB 函数来实现的算法。典型应用包括:面向矩阵的计算数据分析和可视化在编写使用 ... -
MATLAB函数-MATLAB编程第二版读书笔记
2022-03-02 17:09:04本文是MATLAB编程第二版-第五章MATLAB函数的读书笔记 -
MATLAB函数文件的使用
2020-07-07 11:12:19MATLAB函数文件的使用 目录MATLAB函数文件的使用1.函数文件基本结构:(1)文件名(2)注释说明部分(3)函数体语句2.函数的调用2.1函数的递归调用3.函数参数的可调性4.局部变量和全局变量4.1局部变量4.2全局变量 1.... -
MATLAB函数句柄
2019-05-15 10:44:51感觉matlab函数句柄就是c语言里面的函数指针,在matlab里面叫它handle,句柄嘛,有了它就可以操纵这个对象(这里也可以叫做函数),这个概念其实可以推广到很多东西,图形fig,自定义函数句柄(也就是下面将会展示的),... -
matlab常用函数-常用函数表.doc
2019-08-12 22:48:43matlab常用函数-常用函数表.doc matlab常用函数 -
求助,Matlab单个自定义函数运行无错,但被调用时会出错
2021-04-22 11:42:34%信赖域子问题函数 N=length(x); qfun=0; for k=1:N qfun=qfun+x(k)^2; end sqfun=sqrt(qfun); cfun=delta-sqfun;%罚函数 tol=1; while tol>epsi pfun=r0*cfun; gfun=sfun+pfun;%障碍函数 [s1,sf]=NT(gfun,x,s0) cf=... -
Matlab中的嵌套函数
2020-12-14 17:32:21嵌套函数是完全包含在父函数内的函数。程序文件中的任何函数都可以包含嵌套函数。 例如,名称为parent的函数包含名称为nestedfx的嵌套函数: function parent disp('This is the parent function') nestedfx ... -
外部函数 - MATLAB & Simulink - MathWorks 中国
2021-04-20 06:12:42外部函数在 MATLAB® 代码中处理对函数 foo 的调用时,代码生成器会找到 foo 的定义并为其函数体生成代码。在某些情况下,您可能希望绕过代码生成,而是使用 MATLAB 引擎来执行调用。使用 coder.extrinsic('foo') ... -
【专家独推】全网最全Matlab常用函数(包括按首字母进行分类)
2022-03-30 21:40:48目录 1、求组合数 2、求阶乘 3、求全排列 4、求指数 5、求行列式 6、求矩阵的转置 7、求向量的指数 ...20、常用的基本数学函数 ...21、常用的三角函数 ...22、适用于向量的常用函数 ...23、MATLAB的永久常数 24、