MATLAB函数function定义函数
Posted 嗑药的皮皮虾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB函数function定义函数相关的知识,希望对你有一定的参考价值。
1、函数声明
定义:function [返回变量列表]=函数名(输入变量列表)
如:function [y1,...,yN] = myfun(x1,...,xM)
end
声明名为myfun 的函数,该函数接受输入参数 x1,...,xM
并返回输出参数 y1,...,yN
。此声明语句必须是函数的第一个可执行代码行。有效的函数名称以字母字符开头,并且可以包含字母、数字或下划线。
在函数定义中必须对返回变量列表中的变量赋值
2、函数文件与脚本文件中的函数
函数文件的名称应与函数的名称一致,不一致则调用该函数时以文件名为函数名调用。
脚本文件中,命令在前,函数定义在后,任何一条命令不能在函数定义之后,函数必须位于该文件的末尾。脚本文件的名称不能与文件中的函数具有相同的名称。
3、可变参数函数
定义:function varargout = myfun(varargin)
end
nargin、nargout、varargin、varargout为MATLAB保留变量,只要进入可变参数函数,MATLAB就将自动生成nargin、nargout、varargin这3个变量,对于varargout变量只有对其赋值varargout才能使用。
nargin:函数的输入参数个数
nargout:函数的输出参数个数
varargin:输入可变参数列表(数据类型为 1xn cell数组,n=nargin)
varargout:输出可变参数列表(数据类型为 1xn cell数组,n=nargout)
脚本文件eg2如下:
[a,b]=demo(1,2) %显示a,b
function varargout = demo(varargin)%输入两个数则求和,否则输入等于输出,两输入两输出其他情况出错
disp(['输入参数个数:',num2str(nargin)]);
if nargin
disp('输入参数为:');
varargin %显示输入
for i=1:nargin
disp(['参数',num2str(i),':',num2str(varargini)]);
end
else
disp('无输入参数');
end
if isnumeric(varargin1)&&isnumeric(varargin2)%判断第一第二个参数是否为整数或浮点数
varargout1=varargin1+varargin2;%求和
varargout2='N';
else
[varargout1:nargout]=varargin1:nargout;%必须使用方括号,否则出错
end
varargout %显示输出
end
运行结果:
>> eg2
输入参数个数:2
输入参数为:
varargin =
1×2 cell 数组
[1] [2]
参数1:1
参数2:2
varargout =
1×2 cell 数组
[3] 'N'
a =
3
b =
'N'
对于cell类型的变量A,当B=A1时B不是cell类型,而是A1内容数据的类型;当B=A(1)时B是cell类型。
给varargout即输出可变参数列表部分赋值时varargout必须加方括号,如:[varargout1:nargout]=varargin1:nargout;
给varargout全部赋值时varargout不用加方括号,如: varargout=varargin1:nargout;
4、同一脚本文件中文件与函数之间数据传递
如果函数要使用文件中的变量,且不通过函数的输入参数传递变量的话,对需要传递的变量在文件开头赋值,并在函数中声明该变量为全局变量global,如global t;
脚本文件eg3
t=10;
a=add(2,1) %显示a
function a=add(b,c)
global t;
a=b+c+t;
end
运行结果:
>> eg3
a =
13
5、不同脚本文件之间数据传递
一个脚本文件的程序需要引用另一个脚本文件的变量时,被引用变量的脚本文件需声明全局变量global,并赋值,如global t;t=10;。需引用变量的脚本文件需在开头声明全局变量global,如global t;,然后在程序中使用该变量即可。
一个脚本文件的函数需要引用另一个脚本文件的变量时,情况与同一脚本相同。
需引用外部变量的脚本文件eg3
clc;
clear;
global t;
b=t+1
a=add(2,1)
function a=add(b,c)
global t;
a=b+c+t;
end
被引用变量的脚本文件eg4
global t;
t=10;
运行eg3
>> eg3
b =
11
a =
13
以上是关于MATLAB函数function定义函数的主要内容,如果未能解决你的问题,请参考以下文章
matlab function定义函数,并且用fsolve求解这个函数。代码如下: