背景
我有 4 个数据集:一个是带有时间和压力的天气数据,另一个是具有相同的压力传感器数据集;时间和压力。本质上,两者都是时间序列。较长的时间序列是天气数据,这两个变量都有大约 64008 个数据点。压力传感器的较短时间序列是 51759。您可以说较短的时间序列是较长时间序列的子集,其中缺少一些数据点。无论如何,我想获得天气压力,但仅限于我的传感器所拥有的时间。
动机
所以基本上,我正在尝试实现一个while 循环,以便对于我的压力传感器的每个等效时间,无论是数据,我都会从天气数据中获取压力。我不需要从天气数据中记录时间,因为我可以使用压力传感器的时间序列。
例子
为了了解我在说什么,我做了一个示例脚本,它运行得很好。
x(:,1) = (1:50)';
x(:,2) = (51:100)';
y(:,1) = [1:12 20:25 40:45]';
i = 1;
j = 1;
while i < numel(y)+1
if y(i) == x(j,1)
a(i,1) = x(j,2);
i = i + 1;
j = j + 1;
else
j = j + 1;
end
end
a
% check
size(y)
size(a)
如您所见,我在 2 列中制作了一个带有长系列的 x 向量。然后我制作了向量 y 值的子集,其中包括 x 向量中包含的数据点。我运行我的脚本,a 的大小与 y 匹配,这意味着大小相同。我还看到矩阵本身具有相同的值。所以它有效。除非这是我遗漏了一些东西的简化版本。无论哪种方式,我的真实脚本都在下面。
% Pressure Data
west_time;
west_pressure;
% Weather Data
weather_data(:,1) = weather_time;
weather_data(:,2) = weather_pressure;
% Initialize vector
weather_pressure_sensor = zeros(numel(west_time));
% Obtaining the pressure from the weather data at a
% particular point in time when it corresponds
% with the time from my pressure sensor
i = 1;
j = 1;
while i < numel(west_time),
if west_time(i) == weather_data(j,1)
weather_pressure_sensor(i,:) = weather_data(j,2);
i = i + 1;
j = j + 1;
else
i = i;
j = j + 1;
end
end
% Weather Pressure
weather_pressure_final = weather_pressure_sensor(:,2);
但是,当我转到我的数据集时,我遇到了错误代码:
Attempted to access weather_data(64009,1); index out of
bounds because size(weather_data)=[64008,2].
Error in data_timeset2 (line 69)
if west_time(i) == weather_data(j,1)
我想知道是否可以在我的代码方面获得一些帮助。我错过了什么还是我没有定义什么?这是我一直使用 while 循环的方式,所以我不知道为什么它现在决定让我失望。但无论如何,我确信这是一件非常琐碎和愚蠢的事情,但我无法为我的生活弄清楚。或者也许有人有另一种方式......?无论哪种方式,提前非常感谢!