小编Joh*_*nes的帖子

找到向量b的唯一索引的最快方法,其中数组A(i,j)== b

我有2个大数组Ab:

A:10.000 ++行,4列,不是唯一的整数
b:具有500.000 ++元素的向量,唯一的整数

由于值的唯一性b,我需要找到唯一的索引b,在哪里A(i,j) == b.

我开始的是

[rows,columns] = size(A);
B = zeros(rows,columns);
for i = 1 : rows
    for j = 1 : columns
        B(i,j) = find(A(i,j)==b,1);
    end
end
Run Code Online (Sandbox Code Playgroud)

这需要大约5.5秒来计算,这是很长的,因为A并且b可以显着更大...我记得我试图通过使用逻辑索引和减少for循环来加速代码

[rows,columns] = size(A);
B = zeros(rows,columns);
for idx = 1 : numel(b)
    B(A==b(idx)) = idx;
end
Run Code Online (Sandbox Code Playgroud)

可悲的是,这需要更长的时间:21秒

我甚至尝试过使用 bsxfun

for i = 1 : columns
   [I,J] = find(bsxfun(@eq,A(:,i),b)) …
Run Code Online (Sandbox Code Playgroud)

performance matlab find

7
推荐指数
1
解决办法
92
查看次数

标签 统计

find ×1

matlab ×1

performance ×1