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 件のコメント

the cyclist
the cyclist 2019 年 10 月 21 日
What data type is C?
Gaetano Pavone
Gaetano Pavone 2019 年 10 月 21 日
C is a 153435x34 cell

サインインしてコメントする。

回答 (1 件)

the cyclist
the cyclist 2019 年 10 月 21 日
編集済み: the cyclist 2019 年 10 月 21 日

1 投票

% 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 件のコメント

Gaetano Pavone
Gaetano Pavone 2019 年 10 月 21 日
C(:,4) actually is like:
C(:,4) = {"Jan";"Jan";"Dec";"Mar";"Jul"};
your code doesn't work for this format
the cyclist
the cyclist 2019 年 10 月 21 日
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.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File Exchange で Workspace Variables and MAT Files についてさらに検索

製品

リリース

R2019b

タグ

質問済み:

2019 年 10 月 21 日

コメント済み:

2019 年 10 月 21 日

Community Treasure Hunt

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

Start Hunting!

Translated by