MATLAB:如何在结构体中使用cellfun?

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

文档中是否提到了这个特定的情况? - Mad Physicist
1个回答

5

您可以编写自定义函数add_val2(x,y),它将y添加到字段x.val2中,并使用@add_val2而不是@plus调用cellfun()

首先创建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);

这将导致
>> out{1}
ans = 
  struct with fields:
    val1: 10
    val2: 70

>> out{2}
ans = 
  struct with fields:
    val1: 1000
    val2: 2050

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接