我有一个CSV文件包含飓风位置坐标的数据。 我是Matlab的新手,所以我不确定如何正确对待日期和小时单元格,特别是当它们以非常规方式显示时。
我需要应用线性插值,这样我就可以每隔30分钟获得一次。
答案 0 :(得分:0)
假设您将数据作为数值
读取现在你有一些像这样的矩阵:
data = [20130928 0 21.1 50.0
20130928 600 22.2 50.3
20130928 1200 23.3 50.6
20130928 1800 24.2 50.6];
要将前两列转换为datetime
值,我们可以这样做:
% Concatenate first two columns, including making all times 4 digits by 0 padding
fulltime = [num2str(data(:,1)), num2str(data(:,2), '%.4u')]
% Use datetime to convert (cell) times to dates with given format
dates = datetime(cellstr(fulltime),'inputformat', 'yyyyMMddHHmm');
>> dates = 28-Sep-2013 00:00:00
28-Sep-2013 06:00:00
28-Sep-2013 12:00:00
28-Sep-2013 18:00:00
现在我们可以轻松插值。我们想要使用的第一个create an array of times:
% Data value every 30 mins
interpdates = dates(1):hours(0.5):dates(end)
然后使用interp1
interpolateddata = interp1(dates, data(:,3:4), interpdates);
>> interpolateddata = 21.1000 50.0000
21.1917 50.0250
21.2833 50.0500
21.3750 50.0750
...
24.1250 50.6000
24.2000 50.6000