Performing Action to ALL 'struct' Variables
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Philip
am 19 Mai 2011
Bearbeitet: per isakson
am 25 Feb. 2018
Is there a way to perform the same action on several variables of type 'struct'?
In my case, I have 30 separate 'struct' variables (with non-logical names), and each of them contains a single vector of 200 elements. I only want to deal with the second half of these elements so I need something like:
struct_name = struct_name.data(100:end)
But need to keep the name of the struct variable intact. Does anyone have any suggestions?
I hope this made sense!
0 Kommentare
Akzeptierte Antwort
Matt Fig
am 19 Mai 2011
% Create several structures with different names...
structn.dat = 1:10;
structm.dat = 1:10;
structk.dat = 1:10;
% Now edit the data.
save mystructs structn structm structk
X = load('mystructs');
F = fieldnames(X);
for ii = 1:length(F)
X.(F{ii}).dat = X.(F{ii}).dat(5:10);
end
% Check
X.structm.dat
8 Kommentare
Walter Roberson
am 19 Mai 2011
Bearbeitet: per isakson
am 25 Feb. 2018
SFN = fieldnames(MyStruct);
for K = 1 : length(SFN)
var_name = SFN{K};
VFN = fieldnames(MyStruct.(var_name));
for N = 1 : length(VFN)
this_field = VFN{N};
if isvector(MyStruct.(var_name).(this_field)) & ...
length(MyStruct.(var_name).(this_field)) > 100
MyStruct.(var_name).(this_field) = MyStruct.(var_name).(this_field)(1:100);
end
end
end
Weitere Antworten (1)
Fangjun Jiang
am 19 Mai 2011
Would this help?
a(200).b=1;
a(200).c=0;
NewStruct=a(100:end);
Or, Do you mean keep the struct variable name, not the field names:
a(1:99)=[];
Now I think you mean this:
a.Data=1:200;
a.Data(1:100)=[]
Siehe auch
Kategorien
Mehr zu Structures finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!