Filter a struct based on the field name.
46 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi all. Assume that i have a struct like the following
my_struct:
f1_x : 0
f1_y : 1
f1_z : 3
f2_x : -1
f2_y : 2
f3_y : 0
My question is how to filter based on the field name (of better, based on part of the field name). For example, if I want to filter all the fields that start with the string f1_, thus obtaning
my_struct_f1:
f1_x : 0
f1_y : 1
f1_z : 3
what should I do? Many thanks in advance.
0 Kommentare
Akzeptierte Antwort
Weitere Antworten (2)
Ammar Dodin
am 28 Jul. 2016
Bearbeitet: Ammar Dodin
am 28 Jul. 2016
For simplicity, let's assume that your struct's name is S. You can first get the field names of struct S using fieldnames. After that you can use something like regex to capture all the filed names that match your criteria.
names = fieldnames(S);
match = {};
for i = 1:length(names)
if ~isempty(regexp(names{i},'^f1')
match{end+1} = names{i};
end
0 Kommentare
Stephen23
am 28 Jul. 2016
Rather than using a scalar structure and messy code with fieldnames, a far more efficient and simple approach is to use a non-scalar structure:
S(1).x = 0;
S(1).y = 1;
S(1).z = 3;
S(2).x = -1;
S(2).y = 2;
S(3).y = 0;
and get the first element:
>> S(1)
ans =
x: 0
y: 1
z: 3
See how easy MATLAB can be ?
0 Kommentare
Siehe auch
Kategorien
Mehr zu Structures finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!