我有一个从csv文件中读取的日期单元格数组。格式如下:
date =
' 2008.12.01'
' 2008.12.02'
' 2008.12.03'
' 2008.12.04'
' 2008.12.05' ......
我想:
使用后
date = char(date);
日期数组变成这样:
date =
2008.12.01
2008.12.02
2008.12.03
2008.12.04
2008.12.05 ......
我认为结果是我想要的......
但是在我使用strread()之后,它给了我奇怪的结果。
[年,月,日] = strread(日期,&#39;%d%d%d&#39;&#39;分隔符&#39;&#39;&#39); < / p>
year =
-1
0
0
0
0
......
但如果我使用下面的代码,strread()可以给我正确答案:
s = sprintf(&#39; 2008.12.01&#39;)
s =
2008.12.01
[年,月,日] = strread(S,&#39;%d%d%d&#39;&#39;分隔符&#39;&#39;&#39)
year =
2008
month =
12
day =
1
我在matlab中检查了&#34; date&#34;和&#34; s&#34;是一个char数组。(通过使用函数&#39; ischar&#39;并简单地显示两者)...
但是为什么strread()会给出不同的结果?
任何人都可以回答吗?
顺便说一句,我使用MatLab v6.5。(出于我自己的原因,所以请不要通过询问&#34来评论;为什么不使用更高版本&#34;).... / p>
答案 0 :(得分:0)
你的问题就在这一行:
date = char(date);
它不会创建字符串数组,matlab中没有字符串数组。它创建了一个字符数组。正如您已经注意到的那样,如果输入单个日期,则strread
- 行是正常的,因此请分别从原始单元格数组输入每个日期:
for idx=1:numel(date)
[year(idx),month(idx),day(idx)]=strread(date{idx},'%d%d%d','delimiter','.');
end
年,月,日的预分配可提高性能。