我对Matlab相当陌生,因此在导入数据方面存在一些问题。
我想输入GDP数据,然后按时间绘制。我能够导入它并将其转换为字符串日期。现在我想把它转换回我的目标矩阵。但是,我只看到目标矩阵中的值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')之后)看起来有点像这样:
Date | % Change
------|---------
21794 | 0
21885 | 1.300000
21976 | 1.500000
22068 | 1.400000发布于 2016-09-10 21:57:41
获得48或49的原因是,datestring(228,1)返回字符串中第一个字符的值。
'09/2016‘的第一个字符是'0','0’值是48 (在ASCII中)。
示例:
s = '09/2016'
s(1)等于'0‘。
转换为double:double(s(1))等于48。
我想你是想把这个月当作数字(而不是字符串)。
一种方法是获得第一个两个字符,并将字符串转换为双(数字):
s = '09/2016'
month_str = s(1:2); % month_str = '09'
month_num = str2num(month_str) %Convert string to number.
不用使用datestr函数,您可以使用datevec。
datevec将日期和时间转换为组件的向量(所有组件都是数字,而不是字符串)。
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;https://stackoverflow.com/questions/39422864
复制相似问题