MATLAB: Question regarding loop with multiple string comparisons

loop string comparison structure arrayMATLAB

Hello. I am trying to extract several Aircraft data from a general data I have. I want the following 6 aircraft data from my general structure data. If it were for only 1 aircraft type, it works fine. However, for several aircraft, it doesn't. I am using a method such that my field 'type' matches the aircraft types and extract those data. If I use & instead of |, it also doesn't work. ( I believe it suggests that both conditions must be satisfied if I use '&' which doesn't make sense since each array has only 1 type.)
idx_plane = false(length(data2),1);
for p = 1 : length(data2) % 1574
if strcmp(data2(p).type, 'A319') | strcmp(data2(p).type, 'A318') | strcmp(data2(p).type, 'B788') | strcmp(data2(p).type, 'A320') | strcmp(data2(p).type, 'A321') | strcmp(data2(p).type, 'A330')
idx_plane(p) = true;
end
end
data2 = data2(idx_plane);

Best Answer

I created some made-up data, and ran your code:
data2(1).type = 'A318';
data2(2).type = 'A319';
data2(3).type = 'B318';
data2(4).type = 'B319';
data2(5).type = 'C318';
data2(6).type = 'C319';
data2(7).type = 'D318';
data2(8).type = 'D319';
idx_plane = false(length(data2),1);
for p = 1 : length(data2) % 1574
if strcmp(data2(p).type, 'A319') | strcmp(data2(p).type, 'A318') | strcmp(data2(p).type, 'B788') | strcmp(data2(p).type, 'A320') | strcmp(data2(p).type, 'A321') | strcmp(data2(p).type, 'A330')
idx_plane(p) = true;
end
end
data2 = data2(idx_plane);
It behaved as I expected. I end up with a 1x2 struct, with only the A318 and A319 types.