gpt4 book ai didi

optimization - 如何在 Matlab 中优化这个时间线匹配代码?

转载 作者:行者123 更新时间:2023-12-03 17:10:55 24 4
gpt4 key购买 nike

我目前有两个时间线(时间线1和时间线2),以及匹配的数据(数据1和数据2)。时间线差不多,但不完全匹配(大约 90% 的共同值)。

我正在尝试从 data1 和 data2 中查找与相同时间戳相对应的值(忽略所有其他值)

我的第一个简单实现如下(考虑到我的时间线包含数千个值,显然速度非常慢)。关于如何改进这一点有什么想法吗?我确信有一种聪明的方法可以做到这一点,同时避免 for 循环或查找操作......

% We expect the common timeline to contain
% 0 1 4 5 9
timeline1 = [0 1 4 5 7 8 9 10];
timeline2 = [0 1 2 4 5 6 9];

% Some bogus data
data1 = timeline1*10;
data2 = timeline2*20;

reconstructedData1 = data1;
reconstructedData2 = zeros(size(data1));

currentSearchPosition = 1;

for t = 1:length(timeline1)
% We only look beyond the previous matching location, to speed up find
matchingIndex = find(timeline2(currentSearchPosition:end) == timeline1(t), 1);

if isempty(matchingIndex)
reconstructedData1(t) = nan;
reconstructedData2(t) = nan;
else
reconstructedData2(t) = data2(matchingIndex+currentSearchPosition-1);
currentSearchPosition = currentSearchPosition+matchingIndex;
end

end

% Remove values from data1 for which no match was found in data2
reconstructedData1(isnan(reconstructedData1)) = [];
reconstructedData2(isnan(reconstructedData2)) = [];

最佳答案

您可以使用 Matlab 的 intersect 函数:

c = intersect(A, B)

关于optimization - 如何在 Matlab 中优化这个时间线匹配代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4819027/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com