MATLAB:如何将 cellfun 与结构一起使用?
MATLAB: How to use cellfun with a struct?
想象一个由相同结构(在布局方面)组成的元胞数组,如下例 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);
您可以编写一个自定义函数 add_val2(x, y)
,它将 y
添加到字段 x.val2
,并使用 @add_val2
而不是 [=] 调用 cellfun()
18=].
首先,创建函数 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
想象一个由相同结构(在布局方面)组成的元胞数组,如下例 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);
您可以编写一个自定义函数 add_val2(x, y)
,它将 y
添加到字段 x.val2
,并使用 @add_val2
而不是 [=] 调用 cellfun()
18=].
首先,创建函数 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