Matlab:为结构数组的相同位置的(不同)字段分配相同的值

时间:2014-12-01 23:08:42

标签: arrays matlab struct field variable-assignment

假设我有一个1x10结构my_struct,其中有两个字段:fieldAfieldB

我应该如何以更直接的形式为所有字段的特定位置指定标量数字(或任何其他实体)?

换句话说,有没有办法做到这一点:

my_struct(5).fieldA = pi;
my_struct(5).fieldB = pi;

以这样的方式:my_struct(5).* = pimy_struct(5) = deal(pi)

1 个答案:

答案 0 :(得分:1)

您可以使用fieldnamescell2struct的组合以编程方式在所有字段中构建具有相同值的结构,然后执行完整结构分配。

function out = setAllFields(s, value)
%SETALLFIELDS Build a scalar struct from template, replacing all field values
% Where s is your template struct, and value is the value desired in all fields
out = cell2struct(repmat({value}, [numel(fieldnames(s)) 1]), fieldnames(s));

定义了该函数后,您可以使用单个或多个目标索引进行这样的赋值。

my_struct(5) = setAllFields(my_struct, pi);
my_struct([2 4:6]) = setAllFields(my_struct, 'foo');