Processing large matrix faster
조회 수: 1(최근 30일)
I need to procces a large matrix (10.104.485x3) called "M". The first two columns are longitude and latitude and the third column is sea depth. I want to trace the coordinates that have depth bigger than 80m. So I try to make a matrix called "coods" with all the corresponding coordinates. Here follows my code:
%M = readmatrix('Bathymetry_Data.txt');
My problem is that the loop never seem to end. I tried pausing after 2 -3 hours and the "i" is still in the very beginning. My operational system has 8 gb Ram. Can anyone tell if I do something wrong, or If I can do anything to make the loop go faster.
Any help will be deeply appreciated, Thank's a lot in advance
Bjorn Gustavsson 2022년 6월 19일
편집: Bjorn Gustavsson 2022년 6월 19일
This ought to be done in one go:
coods = M(:,M(:,3)<-80);
In the case you cannot do it in a vectorized way and cannot determine beforehand how big a matrix will be (which makes it impossible to pre-allocate the array), you should try to do the array-growing in blocks instead of element by element, say a couple of 1000 elements at a time and then crop the array down to size at the end.