Simplify code with nested if

1 回表示 (過去 30 日間)
Gaetano Pavone
Gaetano Pavone 2019 年 10 月 21 日
コメント済み: the cyclist 2019 年 10 月 21 日
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 日
% 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.

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

カテゴリ

Help Center および File ExchangeDates and Time についてさらに検索

タグ

製品


リリース

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by