How to replace values in a very large array
显示 更早的评论
Hi
I have an array idx_Laser which is very large (~1 billion values). Whenever a certain condition is fulfilled for another array tdcRelTime I want to replace the values in my idx_Laser array.
The trivial solution would probably be:
for xx = 1:length(tdcRelTime)
if tdcRelTime(xx) < 1.5e10
idx_Laser(idx_Laser==xx) = 0;
end
end
However, as both arrays are quite big, this takes extremely long.
Is there a solution for that problem that is computionally more efficient?
I thought about iterating only through a part of the idx_Laser array, as this is sorted by the size of the values, but I couldnt come up with a good solution.
3 个评论
dpb
2022-8-3
Can you hold the arrays in memory?
If that is the case, it's already vectorized for you --
ix=(tdcRelTime < 1.5e10);
idx_Laser(ix) = 0;
If the arrays are being held in virtual memory and you're paging to address them in the above code, that will be slow.
Jonathan Weber
2022-8-4
Jonathan Weber
2022-8-4
采纳的回答
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!