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

1 visualización (últimos 30 días)
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'.

Respuesta aceptada

Jan
Jan el 4 de Sept. de 2012
Editada: Jan el 4 de Sept. de 2012
value = transpose([ft{:, 2}]);
index = (value >= 60) & (value <= 90) & strcmp(ft(:, 5), 'DFW');
ft2 = ft(index, :);

Más respuestas (1)

Azzi Abdelmalek
Azzi Abdelmalek el 4 de Sept. de 2012
Editada: Azzi Abdelmalek el 4 de Sept. de 2012
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 comentarios
Jan
Jan el 14 de Nov. de 2012
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)

Iniciar sesión para comentar.

Categorías

Más información sobre Get Started with MATLAB en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by