[英]Apply Function Handle to Multiple Input Arguments
我在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.
如何正確執行此操作?
您可以定義自己的特殊函數來調用具有給定參數的匿名函數,例如:
% 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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.