Matlab:内联函数数组。调用单一功能

时间:2013-11-23 22:34:54

标签: matlab

我得到了我定义的内联函数数组:

x = 0:1/(nDatasets-1):1;

M = 24; % number of base functions
f = cell(M,1);
for m = 1:M
    f{m} = inline(sprintf('exp(- (x- %d/(%d+1)).^2/(1/(2*%d^2)))', m,M,M), 'x');
end

但我不知道现在如何访问/调用单个函数。

1 个答案:

答案 0 :(得分:1)

只需f{index}(arguments)。例如:

>> f{1}=inline(sprintf("x^2"))
f = 
{
  [1,1] = f(x) = x^2
}
>> f{2}=inline(sprintf("x^3"))
f = 
{
  [1,1] = f(x) = x^2
  [1,2] = f(x) = x^3
}
>> f{1}(2)
ans =  4
>> f{2}(2)
ans =  8

或者,您可以将内联函数分配给临时变量,然后像普通函数一样使用它:

>> tmpf=f{1}
tmpf = f(x) = x^2
>> tmpf(2)
ans =  4

请注意,这也适用于匿名函数:

>> f{1}=@(x) x^2
f = 
{
  [1,1] =

@(x) x ^ 2

}
>> f{2}=@(x) x^3
f = 
{
  [1,1] =

@(x) x ^ 2

  [1,2] =

@(x) x ^ 3

}
>> f{1}(2)
ans =  4
>> f{2}(2)
ans =  8
>>