我定义了一个包含值和函数的单元格数组:
>> A = {1, 2, 3; @(x) x+5, @(x) x+10, 5}
A =
[ 1] [ 2] [3]
@(x)x+5 @(x)x+10 [5]
有谁知道如何将此单元格数组应用于某个值?例如,当x = 2
时,应用程序返回另一个单元格数组:
[ 1] [ 2] [3]
[ 7] [ 12] [5]
答案 0 :(得分:4)
将常量定义为函数:
A = {@(x)1, @(x)2, @(x)3; @(x) x+5, @(x) x+10, @(x)5}
现在使用cellfun
:
k = 2;
cellfun(@(x)x(k),A)
另请注意,如果您想同时应用多个k
值(例如k = 1:5
),则需要在此A
@(x) n
中编辑常量函数类似于@(x) n*ones(size(x))
,然后将cellfun
调用更改为:
cellfun(@(x)x(k),A, 'uni',0)
回答你的意见中的问题:
是否可以引用单元格数组中函数中的其他单元格? 例如,我们可以定义类似
A = {@(x)1, @(x)2, the 1st cell + the 2nd cell, @(x)4}
的内容吗?
您可以按如下方式定义A
:
A = {@(x)1, @(x)2, @(x)(A{1}(x)+A{2}(x)), @(x)4}
答案 1 :(得分:3)
定义像这样的单元格数组/函数不是更好:
A = @(x) {1, 2, 3; x+5, x+10, 5};
然后你可以通过简单的方式来应用它
A(2)
也许你甚至可以在这里使用普通矩阵而不是单元格数组:
A = @(x) [1, 2, 3; x+5, x+10, 5];