Почему в Matlab не удается преобразовать следующую строку в число? - PullRequest
2 голосов
/ 11 мая 2011

Я пытаюсь разбить дату и добавить одно число к дню, месяцу и году

date = input('Please enter the date (DD/MM/YYYY):','s')


tokens = regexp(sprintf(date),'/','split')
daymonthyear = str2num(tokens)
test = daymonthyear + 1

Ответы [ 3 ]

4 голосов
/ 11 мая 2011

Как указывает сообщение об ошибке, str2num ожидает строки, а не массив ячеек строк.Есть два способа решения проблемы.Либо вы можете использовать str2double, либо cellfun в сочетании с str2num.

Решение 1

daymonthyear = str2double(tokens)

Решение 2

daymonthyear = cellfun(@str2num,tokens)
1 голос
/ 11 мая 2011

Джонас уже обратился к с конкретной ошибкой, которую вы получили, но я подумал, что вас может заинтересовать более простой подход, который использует SSCANF вместо REGEXP :

date = input('Please enter the date (DD/MM/YYYY):','s');
daymonthyear = sscanf(date,'%d/%d/%d',[1 3]);
0 голосов
/ 11 мая 2011

Вы не можете сделать это, используя 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...