datestring到date

我是相当新的Matlab,因此有一些导入数据相关的问题。

我想input国内生产总值数据,然后绘制时间。 我能够导入它并翻译成stringdate。 现在我想把它转换回我的目标matrix。 不过,我只是看到我的目标matrix中的值48或49。

我的代码如下:

AUSGDP = zeros(228,2); GDP = xlsread('AUDGDP.xlsx'); GDP = GDP(1:228,1) + 693960; datestring = datestr(GDP,'mm/yyyy'); AUSGDP(228,1) = datestring(228,1) 

数据(在xlsread('AUDGDP.xlsx')之后xlsread('AUDGDP.xlsx')看起来像这样:

 Date | % Change ------|--------- 21794 | 0 21885 | 1.300000 21976 | 1.500000 22068 | 1.400000 

你得到48或49的原因是因为datestring(228,1),返回string中第一个字符的值。
'09 / 2016'的第一个字符是'0','0'值是48(ASCII)。

例:
s = '09/2016'
s(1)等于“0”。
转换为double: double(s(1))等于48。

我想你的意思是把月份当作数字(反对string)。

一种方法是先获得两个字符,然后将string转换为双精度(数字):
s = '09/2016'
month_str = s(1:2); % month_str = '09'
month_num = str2num(month_str) %Convert string to number.

而不是使用datestr函数,你可以使用datevec
datevec将date和时间转换为组件向量(所有组件都是数字,而不是string)。
datevec('09/2016', 'mm/yyyy')
回报: 2016 9 1 0 0 0

如果你只需要一个月,你可以使用:
[~, m, ~, ~, ~, ~] = datevec('09/2016', 'mm/yyyy')
结果是m = 9

在你的代码中,你可以像下面这样使用它:

 AUSGDP = zeros(228,2); GDP = xlsread('AUDGDP.xlsx'); GDP = GDP(1:228,1) + 693960; datestring = datestr(GDP,'mm/yyyy'); %AUSGDP(228,1) = datestring(228,1) [~, m, ~, ~, ~, ~] = datevec(datestring, 'mm/yyyy'); %m is months column as numbers. AUSGDP(228,1) = m;