matlab里面的function的输入参数有函数怎么调用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab里面的function的输入参数有函数怎么调用?相关的知识,希望对你有一定的参考价值。

这里举个简单的例子
function c=fun(y,a,b)
%%假设这个函数是求函数y在[a,b]区间的积分值。
上面的函数怎么调用啊。
我是这样调用的
syms x;
y=2^x;
aa=fun(y,1,2);

function用来定义函数,一般一个函数放在一个.m文件里。举个简单的例子建立一个myfunction.m,然后在文件中写。
function y=myfunction(a,b)
其中a,b是输入函数的参数,y是函数返回的值。当需要返回多个值时,可以将y看作一个数组,或者直接将函数的开头写成如function [x,y]=myfunction(x,y)的形式。
然后就是定义函数的内容,通俗的说就是怎样由输入参数a,b得到返回值y。比如最简单的y=a+b。

总结一下,将下面的代码
function y=myfunction(a,b)
y=a+b;
保存为一个m文件myfunction.m,调用方式如下。
num=myfunction(3,4);
这样就可以由函数中的y=a+b得到num的值是3+4=7。
参考技术A 个人感觉:如果要求一个函数在区间[a,b]上的积分,不应该这样定义函数
你是有什么特殊要求?
应该是在函数体里定义函数,然后在主程序里调用函数
例如:
函数:
function y=fun(x)
y=2.^x;
保存后
在主程序里调用:
aa=quadl('fun',a,b);才对呀。
怎么感觉怪怪的,可能编程思想不一样。追问

其实我那样调用好像是没错的;
没错我的求积分函数确实很特殊,是高斯勒让德积分求积分值~~

追答

我就说嘛,我也没说错,函数是可以任意定义的
可是你的函数体里并没有定义输出宗量的形式呀,就是说你定义的函数是什么形式呢?

像你说的这样,貌似主程序的调用也没什么大问题
要不把你的问题整个拿出来吧。

本回答被提问者和网友采纳
参考技术B 就是这样调用的。

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中创建m文件

MATLAB函数function定义函数

MATLAB函数function定义函数

matlab中function的功能

matlab中function的功能

MATLAB 函数的一个输入变量是另一个函数