我有2个大数组A和b:
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)