2014-03-06 23 views
0

我有一个基体和在MATLAB矢量定义:应用功能处理到多个输入参数

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

而这需要这些类型的输入参数的函数:

b = MacVecProd(A,x); 

然而,I” d喜欢使用此函数的函数句柄,以便将其应用于我的值。我想,我可以用cellfun这一点,但:

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

给出了错误:

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

如何正确地做到这一点?

+2

你为什么做一个单元格?只需使用double数组参数直接调用该函数即可。 – chappjc

+0

为什么你不做A * [x1,x2,...,xn],其中x是列向量..?它会给你想要的:[b1,b2,...,bn] ... –

+0

实际上,我的问题并不像我提出的那么简单。我有大量的函数,每个函数都需要一个矩阵和一个列向量作为输入。我想在我的矩阵和向量上应用每个函数,并将结果累加到矩阵中。 – geofflittle

回答

0

你可以定义自己的,特殊函数来调用匿名函数与给定的参数,例如:基于您拥有的功能排列您的评论

% 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);