想象一个由相同结构组成(在布局方面)的单元格数组,如下面的示例cellArray
。如何将cellfun
应用于这些结构的特定字段?
cellArray{1,1}.val1 = 10;
cellArray{1,1}.val2 = 20;
cellArray{1,2}.val1 = 1000;
cellArray{1,2}.val2 = 2000;
如何使用cellfun将值50添加到所有单元格,但仅添加到字段val2
?
out = cellfun(@plus, cellArray?????, {50, 50}, 'UniformOutput', false);
答案 0 :(得分:5)
您可以编写自定义函数add_val2(x, y)
,将y
添加到字段x.val2
,然后使用cellfun()
而不是{{1}来调用@add_val2
}。
首先,创建函数@plus
:
add_val2.m
然后,调用function x = add_val2(x, y)
x.val2 = x.val2 + y;
end
就像
cellfun()
导致
out = cellfun(@add_val2, cellArray, {50, 50}, 'UniformOutput', false);