Matlab编程 入门(七)

来源:互联网 发布:股民开户数据 编辑:程序博客网 时间:2024/06/05 09:27

 Matlab()

1.Matlab语言函数的基本结构

(1)MatlabM-函数结构

function[返回变量列表] =函数名(输入变量列表)

注释说明语句段由%引导

输入返回变量格式的检测

函数体语句

:用户输入k求出1+...m < k最小项m,最小项数和s返回

//函数

function[m,s] = findsum(k)

s = 0;m = 0;

while(s < k),m=m+1;s=s+m;end

Trial>> [m,s] = findsum(100000)

m =

   447

s =

      100128

问:编写一个函数,生成一个nXmHilbert矩阵

它的第i行第j列的元素值为h(i,j) = 1/(i+j-1)

实现要求:

1.如果只传一个参数就自动生成一个方阵

2.在函数里给出恰当的注释和说明

3.检测输入和返回变量的个数,如果有错误就给出错误信息

//函数

function A = myhilb(n,m)

%myhilb(n,m)返回nxmHilbert矩阵

%myhilb(n)返回nxnHilbert方阵

if(nargout>1), error('too many output arguement args');end

if(nargin==1), m = n;

elseif nargin == 0 |nargin > 2

        error('wrong number with input args');

end

for i = 1:n

  for j = 1:m

      A(i,j) = 1/(i+j-1);

  end

end

//实现

Trial>> A = myhilb(3,4)

A =

    1.0000    0.5000    0.3333    0.2500

    0.5000    0.3333    0.2500    0.2000

    0.3333    0.2500    0.2000    0.1667

(2)递归函数

:n!

function k = m_fact(n)

if nargin~= 1,error('输入变量个数错误');end

if nargout>1, error('输出错误');end

if abs(n-floor(n))>eps |n<0

    error('输入变量应为非负整数');

end

if(n>1)

    k = n*m_fact(n-1);

elseif any([0,1]==n)

    k = 1;

end

(3)inline函数和匿名函数

为了描叙数学函数的方便,可直接用inline()函数编写,而不必须用Matlab文件编写

格式:

 fun = inline (‘函数内容’,自变量列表)

用处:这样的结构不支持复杂的结构,函数大都为一条语句

例如:f(x,y) = sin(x^2+y^2)可以直接用

f = inline(‘sin(x^2+y^2)’,’x’,’y’)定义

Trial>> f = inline('sin(x^2+y^2)','x','y')

f =

     内联函数:

     f(x,y) = sin(x^2+y^2)

Trial>> f(2,3)

ans =

0.4202

(4)匿名函数

 f = @(变量列表)函数内容

Trial>> f = @(x,y)sin(x.^2+y.^2)

f =

  包含以下值的 function_handle:

    @(x,y)sin(x.^2+y.^2)

Trial>> f(2,3)

ans =

0.4202

匿名函数可使用工作空间的变量

Trial>> a = 3;b = 4;

Trial>> f = @(x,y)(a*x^2+b*y^3)

f =

  包含以下值的 function_handle:

    @(x,y)(a*x^2+b*y^3)

Trial>> f(3,2)

ans =

    59


1 0