2014-12-01 46 views
2

假設我有一個1x10結構my_struct有兩個字段:fieldAfieldBMatlab:給結構數組中相同位置的(不同)字段分配相同的值

我應該如何爲一個更直接的形式的所有領域的特定位置指定一個標量數字(或任何其他實體)?

換句話說,有沒有辦法做到這一點:

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

在這樣的方式:my_struct(5).* = pimy_struct(5) = deal(pi)

回答

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'); 
相關問題