MATLAB中feval、class、'function_handle'、isa、strcmp的用法

来源:互联网 发布:知乎是什么 编辑:程序博客网 时间:2024/06/05 06:41

今天看了一段MATLAB的程序,

function [D0,D1] = der_check(f,df,index,varargin)  %  % Calculate function value and derivative  %  if isstr(f) | strcmp(class(f),'function_handle')    y0 = feval(f,varargin{:});  else    y0 = f(varargin{:});  end

在控制面板里用help查了下,isstr是判定 f  是否为字符串,isa判定 f 是否为目标类,常用用法: ISA(OBJ,'classname')

class(f)也是判定 f 是否为MATLAB的一种类,

常用的类为:

 double          -- Double precision floating point numeric array
                         (this is the traditional MATLAB matrix or array)
      logical         -- Logical array
      char            -- Character array
      single          -- Single precision floating-point numeric array
      float           -- Double or single precision floating-point numeric array
      int8            -- 8-bit signed integer array
      uint8           -- 8-bit unsigned integer array
      int16           -- 16-bit signed integer array
      uint16          -- 16-bit unsigned integer array
      int32           -- 32-bit signed integer array
      uint32          -- 32-bit unsigned integer array
      int64           -- 64-bit signed integer array
      uint64          -- 64-bit unsigned integer array
      integer         -- An array of any of the 8 integer classes above
      numeric         -- Integer or floating-point array
      cell            -- Cell array
      struct          -- Structure array
      function_handle -- Function Handle
      <classname>     -- Any MATLAB or Java class


feval就是把已知的数据或符号带入到一个定义好的函数句柄中
如下面的例子:

syms tf=@(x,y) x^2+y^2k1=feval(f,1,t)k2=f(1,t)k3=feval(f,1,1)k4=f(1,1)k1 = t^2 + 1k2 = t^2 + 1k3 =     2k4 =     2

0 0