将cellfun仅应用于单元格数组中的一列

时间:2015-08-06 00:30:38

标签: matlab

我知道cellfun可以应用于整个单元阵列并理解其语法。但是,是否可以将cellfun仅应用于单元数组中的一列而不会影响其他列?

1 个答案:

答案 0 :(得分:3)

正如用户1543042和它的魔术在评论中所说,您可以使用':'将单元格功能应用于一列,但您想添加一个分配步骤。此外,如果您希望单元格函数返回单元格数组,则需要标记非均匀输出。所以,你最终得到:

C(:,i) = cellfun(@foo, C(:,i), 'UniformOutput', false)

要查看实际操作示例:

>> C = {1,2,3;4 5 6};
>> C
C = 
    [1]    [2]    [3]
    [4]    [5]    [6]
>> size(C)
ans =
     2     3
>> cellfun(@(x)x.^2,C(:,1))
ans =
     1
    16
>> C(:,1) = cellfun(@(x)x.^2,C(:,1))
Conversion to cell from double is not possible. 
>> C(:,1) = cellfun(@(x)x.^2,C(:,1),'UniformOutput',false)
C = 
    [ 1]    [2]    [3]
    [16]    [5]    [6]
>>