Simplify code with nested if

I have a matrix C in which every row contains dates and times. In the fourth column months are indicated as Jun, Feb, Mar, etc... I would like to replace such abbreviations with their corresponding numeric values: Jan->1, Feb->2, etc... My first attempt is:
for i=1:size(C,1)
if C(i,4)=='Jen' C(i,4)==1;
elseif C(i,4)=='Feb' C(i,4)==2; ... etc
end
end
Is there any way for simplify this code?

2 comentarios

the cyclist
the cyclist el 21 de Oct. de 2019
What data type is C?
Gaetano Pavone
Gaetano Pavone el 21 de Oct. de 2019
C is a 153435x34 cell

Iniciar sesión para comentar.

Respuestas (1)

the cyclist
the cyclist el 21 de Oct. de 2019
Editada: the cyclist el 21 de Oct. de 2019
% A little pretend data, where I only fill in the 4th column with a few months
C = cell(5,6);
C(:,4) = {'Jan';'Jan';'Dec';'Mar';'Jul'};
% Replace the 4th column with the numeric indices
C(:,4) = num2cell(month(datetime(C(:,4),'Format','MMM')));

2 comentarios

Gaetano Pavone
Gaetano Pavone el 21 de Oct. de 2019
C(:,4) actually is like:
C(:,4) = {"Jan";"Jan";"Dec";"Mar";"Jul"};
your code doesn't work for this format
the cyclist
the cyclist el 21 de Oct. de 2019
Try
month(datetime([C{:,4}],"Format","MMM"))
instead. That creates a string array from the cell array of strings, which is an allowed input to the datetime function.

Iniciar sesión para comentar.

Categorías

Más información sobre Characters and Strings en Centro de ayuda y File Exchange.

Productos

Versión

R2019b

Etiquetas

Preguntada:

el 21 de Oct. de 2019

Comentada:

el 21 de Oct. de 2019

Community Treasure Hunt

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

Start Hunting!

Translated by