我对Matlab很新,因此在导入数据方面存在一些问题。
我想导入GDP数据,然后将其绘制成时间。我能够导入它并转换为字符串日期。现在我想将它转换回我的目标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')
之后看起来像这样:
Date | % Change
------|---------
21794 | 0
21885 | 1.300000
21976 | 1.500000
22068 | 1.400000
答案 0 :(得分:0)
你得到48或49的原因是因为datestring(228,1),返回字符串中第一个字符的值。
“09/09”的第一个角色'是' 0'和' 0'值为48(ASCII格式)。
例:
s = '09/2016'
s(1)
等于' 0'
转换为double:double(s(1))
等于48。
我想你的意思是将月份作为数字(与字符串相对)。
一种方法是获得第二个字符,并将字符串转换为double(至数字):
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;