1

我在 MATLAB 中定义了一个矩阵和一个向量:

A=rand(3);
x=rand(3,1);

以及一个接受这些类型的输入参数的函数:

b = MacVecProd(A,x);

但是,我想使用此函数的函数句柄将其应用于我的值。我以为我可以用cellfun这个,但是:

v = {A,x};
cellfun(@MatVecProd_a, v{:})

给出错误:

Error using cellfun
Input #2 expected to be a cell array, was double instead.

我该如何正确地做到这一点?

4

1 回答 1

1

您可以定义自己的特殊函数来调用具有给定参数的匿名函数,例如:

% define special function to call function handles
myfuncall = @(fh, v) fh(v{:});

% execute MacVecProd using myfuncall
b = myfuncall(@MacVecProd, v)

根据您的评论,您有一系列函数并且您希望为您的输入参数执行它们,您可以执行以下操作:

  % cell array of function handles
  myFunctioins = {@MacVecProd, @MacVecProd2, @MacVecProd3};

  % execute each function with v parameters
  % I assume you want to execute them for the same input v
  resultCell = cellfun(@(fh) fh(v{:}), myFunctioins, 'UniformOutput', 0);
于 2014-03-06T03:22:45.020 回答