How to row reduce matrix with character string and number interval?

ft=
'2010-06-0100:13:33' [95] 'AAL1799' 'MD82' 'DFW'
'2010-06-0100:13:33' [60] 'EGF3258' 'E135' 'DFW'
'2010-06-0100:13:33' [40] 'EGF3345' 'E135' 'RTR'
'2010-06-0100:13:33' [86] 'AAL1951' 'MD83' 'DFW'
'2010-06-0100:13:33' [72] 'AAL1227' 'MD82' 'DFW'
I would like to reduce my matrix to only have rows with column 2 greater than or equal to 60 but less than or equal to 90 and have column 5 have 'DFW'.

 Accepted Answer

value = transpose([ft{:, 2}]);
index = (value >= 60) & (value <= 90) & strcmp(ft(:, 5), 'DFW');
ft2 = ft(index, :);

More Answers (1)

ft=ft(cell2mat(cellfun(@(x) x>=60 & x<=90,ft(:,2),'uni',false)),:)
ft=ft(cell2mat(cellfun(@(x) isequal(x,'DFW'),ft(:,5),'uni',false)),:)

2 Comments

Both methods compute the same, but the first one is much faster and simpler:
strcmp(ft(:, 5), 'DFW')
cellfun(@(x) isequal(x,'DFW'), ft(:,5), 'uni', false)

Sign in to comment.

Categories

Find more on MATLAB in Help Center and File Exchange

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!