Why does the following string to number conversion fail in Matlab?
I'm trying to break up the date and add a single number to the day, month and year
date = input('Please enter the date (DD/MM/YYYY):','s')
开发者_如何学编程
tokens = regexp(sprintf(date),'/','split')
daymonthyear = str2num(tokens)
test = daymonthyear + 1
As the error message indicates, str2num
expects strings, not a cell array of strings. There are two ways to solve the issue. Either, you can use str2double
, or cellfun
combined with str2num
.
Solution 1
daymonthyear = str2double(tokens)
Solution 2
daymonthyear = cellfun(@str2num,tokens)
Jonas already addressed the specific error you were getting, but I thought you may be interested in a simpler approach that uses SSCANF instead of REGEXP:
date = input('Please enter the date (DD/MM/YYYY):','s');
daymonthyear = sscanf(date,'%d/%d/%d',[1 3]);
You can't do it using addtodate?
i = input('Please enter the date (DD/MM/YYYY):','s')
date = datenum(i, 'dd/mm/yyyy')
date = addtodate(date, 1, 'year')
date = addtodate(date, 1, 'month')
date = addtodate(date, 1, 'day')
tokens = regexp(datestr(date, 'dd/mm/yyyy'),'/','split')
精彩评论