如何在Matlab中实现线性插值 - 坐标和日期

时间:2017-08-18 13:40:02

标签: matlab date time coordinates interpolation

我有一个CSV文件包含飓风位置坐标的数据。 我是Matlab的新手,所以我不确定如何正确对待日期和小时单元格,特别是当它们以非常规方式显示时。

我需要应用线性插值,这样我就可以每隔30分钟获得一次。

enter image description here

1 个答案:

答案 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