我希望能夠在MATLAB(r2014a)中動態地將字段分配給結構數組,包括層次結構。除了通過以下示例,我不確定如何最好地描述問題。動態分配具有層次結構的字段名稱
我知道如何做到這一點:
field_name1 = 'bar1';
field_name2 = 'bar2';
% ... etc.
foo.(field_name1) = pi;
foo.(field_name2) = exp(1);
% ... etc.
結果變量foo
與領域bar1
和bar2
的結構。
我希望能夠做的是:其中取決於以前的狀態
field_name1 = 'bar1';
field_name2 = 'bar2';
% ... etc.
if true_false_statement
extra_level = '';
else
extra_level = 'baz.';
end
foo.([extra_level field_name1]) = pi;
foo.([extra_level field_name2]) = exp(1);
% ... etc.
,字段可以存儲在結構的頂層或者一個子場下。 (注意,如果我從頭開始做這件事,我會設計不同的事情來避免這個問題,但是我修改了一些代碼,這是一個更大的工作流程中的中間步驟,所以我必須保留這些數據。結構一致)
目前,代碼看起來是這樣的:
field_name1 = 'bar1';
field_name2 = 'bar2';
% ... etc.
if true_false_statement
foo.(field_name) = pi;
foo.(field_name) = exp(1);
% ... etc.
else
foo.baz.(field_name) = pi;
foo.baz.(field_name) = exp(1);
% ... etc.
end
或許罰款一個兩個領域,但也有很多領域,這會導致大量的複製/粘貼代碼。我試圖讓extra_level
爲空字段,並且我已經嘗試使的形式爲*.*
,但是這兩個選項都會引發錯誤,因爲結果不是有效的變量名稱。
有沒有很好的方法來做到這一點?
有趣的問題。我期待着答案。 – rayryeng