У меня есть массив ячеек даты, который считывается из файла csv. Формат ниже: ДатаРазличные результаты от STRREAD() для чтения строк
=
'2008.12.01'
'2008.12.02'
'2008.12.03'
'2008.12.04'
'2008.12.05' ... ...
И я хочу :
- превратить массив ячеек в массив строк,
- использовать strread(), чтобы прочитать его "YYYY", "мм" и значение "DD" в 3 двойной массив [год, мм, дд] ,
- использовать datenummx(), чтобы включить [год, мм, дд] в серию номер.
После того, как я использовать
Date = полукокса (дата);
массив дата станет следующим образом:
дата =
2008.12.01
2008.12.02
2008.12.03
2008.12.04
2008.12.05 ... ...
, который я думаю, что результат является то, что я хочу ...
Но после того, как я использую strread(), это дает мне странный результат.
[год, месяц, день] = strread (дата, '% d% d% d', 'разделитель', '');
год =
-1
0
0
0
0
... ...
НО, если я использую код ниже, strread() может дать мне правильный ответ:
s = sprintf ('2008.12.01 ')
s =
2008.12.01
[год, месяц, день] = strread (с,' % d% d% d '' разделитель», '')
год =
2008
месяц =
12
день =
1
И я проверил в MATLAB, что как "дата" и "s" представляет собой массив символов. (С помощью функции «ischar 'и просто отображать оба) ...
Но почему strread() дает отличные результаты?
Может ли кто-нибудь ответить?
, кстати, я использую v6.5 MatLab. (По моей причине, пожалуйста, не комментируйте, спрашивая «почему бы не использовать более позднюю версию») ....
Спасибо, Даниэль ... и мне интересно, есть ли способ, которым я могу выполнить цикл без «для»? Я слышал, что это очень медленно, когда обрабатывают большой объем данных. –
А также, мне интересно, не может ли «strread» принять массив символов в качестве входных данных, почему бы ему не вернуть ** ERROR ** вместо получения нечетного результата? –
У меня нет опыта работы с такими старыми версиями Matlab. Используйте preallocation и проверьте его. – Daniel