gpt4 book ai didi

matlab - 计算 Mx2 和 Nx2 矩阵中的重叠

转载 作者:行者123 更新时间:2023-12-02 22:44:08 24 4
gpt4 key购买 nike

我有两个矩阵 A 和 B,都包含事件开始和停止时间的列表:

A(i,1) = onset time of event i
A(i,2) = offset time of event i
B(j,1) = onset of event j
...

我的目标是得到两个索引列表 aIdxbIdx 使得 A(aIdx,:)B( bIdx,:) 包含重叠的事件集。

我整天都在绞尽脑汁想弄清楚这个问题。有没有快速、简单、matlaby 的方法来做到这一点?

我可以使用 for 循环来做到这一点,但这对于 matlab 来说似乎有点老套:

aIdx = [];
bIdx = []
for i=1:size(A,1)
for j=i:size(B,1)
if overlap(A(i,:), B(j,:)) % overlap is defined elsewhere
aIdx(end+1) = i;
bIdx(end+1) = j;
end
end
end

最佳答案

这是一个零循环解决方案:

overlap = @(x, y)y(:, 1) < x(:, 2) & y(:, 2) > x(:, 1)
[tmp1, tmp2] = meshgrid(1:size(A, 1), 1:size(B, 1));
M = reshape(overlap(A(tmp1, :), B(tmp2, :)), size(B, 1), [])';
[aIdx, bIdx] = find(M);

关于matlab - 计算 Mx2 和 Nx2 矩阵中的重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10301718/

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