MATLAB:如何使用带有结构的cellfun?

时间:2018-01-29 14:10:08

标签: matlab struct cell-array

想象一个由相同结构组成(在布局方面)的单元格数组,如下面的示例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);

1 个答案:

答案 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);