假设我有一个1x10
结构my_struct
,其中有两个字段:fieldA
和fieldB
。
我应该如何以更直接的形式为所有字段的特定位置指定标量数字(或任何其他实体)?
换句话说,有没有办法做到这一点:
my_struct(5).fieldA = pi;
my_struct(5).fieldB = pi;
以这样的方式:my_struct(5).* = pi
或my_struct(5) = deal(pi)
?
答案 0 :(得分:1)
您可以使用fieldnames
和cell2struct
的组合以编程方式在所有字段中构建具有相同值的结构,然后执行完整结构分配。
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');