MATLAB: Extract from structure data with a field with the same value

extractMATLABstruct

I have a structure with several fields and I want to extract only the structure elements having the same value for a particular field.
For example:
A = struct('type', '', 'par1', 0, 'par2', 0);
A(1).type = 'type1';
A(1).par1 = 10;
A(1).par2 = 20;
A(2).type = 'type2';
A(2).par1 = 11;
A(2).par2 = 22;
A(3).type = 'type3';
A(3).par1 = 33;
A(3).par2 = 40;
.
.
.
A(10).type = 'type2';
A(10).par1 = -1;
A(10).par2 = -1;
I need to extract ONLY the elements with type = 'type1'; the only way I know to do this is to do a loop like this:
indx = [];
for ii = 1:length(A)
if strcmp(A(ii).type,'type1')
indx = [ind ii];
end
end
Actually, A is bigger than the example; is there an easier an faster way to do this?
Thank you

Best Answer

match = strcmp({A.type}, 'type1'); % Logical indices
idx = find(match) % Indices
value = [A(match).par1] % Faster with logical indexing