我想重新排列結構如下:插入中間水平爲嵌套結構數組
%// original struct
s(1).a = rand(10,1);
s(2).a = rand(10,1);
s(1).b = rand(10,1);
s(2).b = rand(10,1);
%// reorder to:
y(1).a = s(1).a;
y(2).a = s(2).a;
y(1).b.c = s(1).b;
y(2).b.c = s(2).b;
下嵌套的循環工作原理:
fieldToMove = 'b';
newFieldname = 'c';
fn = fieldnames(s);
for ii = 1:numel(fn)
for jj = 1:numel(s)
if strcmp(fn{ii},fieldToMove)
y(jj).(fn{ii}).(newFieldname) = s(jj).(fn{ii});
else
y(jj).(fn{ii}) = s(jj).(fn{ii});
end
end
end
但它似乎是一個很大的矯枉過正我。任何想法如何優化或簡化它?
我嘗試了很多臨時值,與rmfield
刪除原始場,並設置新的與setfield
,但沒有什麼工作,只要始終需要一個標量structur。有一些我忽略的功能嗎?
這兩個選項都非常好!我發現我必須學習更多關於setfield函數的用法。 – thewaywewalk