我有一个大小为(n,1)的单元数组,其中包含一个函数句柄。每个单元格都必须包括特定的函数句柄和前一个单元格中函数句柄的总和。如何执行此操作?为了澄清这一点,我举了一个例子。
A = cell(size(ones(n,1)));
for i = 1 : n
    A{i,1} = @(x) A{i-1,1} + i .* x;
end如何在x = 2获取A{n,1} (例如)
发布于 2018-12-11 05:21:04
实际上已经很接近了,但是您需要为i = 1添加一个特例,并且需要调用该函数:
n = 10;
A = cell(size(ones(n,1)));
A{1,1} = @(x) 1 .* x;
for ii = 2 : n
    A{ii,1} = @(x) A{ii-1,1}(x) + ii .* x;
end我用ii替换了i,以避免与复数混淆。对于案例n = 10
>> A{n}(2)
ans =
   110发布于 2018-12-11 05:38:05
调用@gnovice comment时,您还可以只创建句柄的单元格数组,然后调用一个函数将它们求和为n
N = 10;
A = cell(N,1);
A{1} = @(x) 1.*x;
for k = 2:N
    A{k} = @(x) k.*x;
end
% the following function sums the output of A{1}(x) to A{n}(x):
f = @(n,x) sum(cellfun(@(c) c(x),A(1:n)));结果是:
>> f(5,2)
ans =
    30
>> f(N,2)
ans =
   110这样,在重新定义f时,A中函数的每次更改都将立即生效
>> A{3} = @(x) -x;
>> f = @(n,x) sum(cellfun(@(c) c(x),A(1:n)));
>> f(N,2)
ans =
   102
>> f(5,2)
ans =
    22https://stackoverflow.com/questions/53712715
复制相似问题