<html><body>
<p><font size="2" face="sans-serif">A simpler way -- </font><br>
<br>
<font size="2" face="sans-serif">outarr=zeros(1000)</font><br>
<font size="2" face="sans-serif">for i=1:1000</font><br>
<font size="2" face="sans-serif">[m,k]=min(abs(B-A(i));</font><br>
<font size="2" face="sans-serif">outarr(i)=k;</font><br>
<font size="2" face="sans-serif">end;</font><br>
<font size="2" face="sans-serif">This will produce a list in outarr such that outarr(n) is the index of the element in B closest to the n'th element in A .</font><br>
<br>
<font size="2" face="sans-serif">If you want to go faster, consider setting up  a binary tree containing B.  Then use the tree to search for nearest neighbor to A(i) and to -A(i).</font><br>
<font size="2" face="sans-serif">Then decide which neighbor is closer.  (I think this works).</font><br>
<font size="2" face="sans-serif">Searching the tree goes as log of length of B at the expense of a linear time in setting it up.</font><br>
<font size="2" face="sans-serif">For some length of B this will win.</font><br>
<br>
<font size="2" face="sans-serif">S</font><br>
<font size="2" face="sans-serif"> </font><br>
<br>
<br>
<br>
<br>
<br>
<br>
<img width="16" height="16" src="cid:1__=0ABB0931DFE655278f9e8a93df@energetiq.com" border="0" alt="Inactive hide details for "P M" ---02/15/2019 03:58:32 PM---Hi experts, my problem is (I guess) a very common thing, but I some"><font size="2" color="#424282" face="sans-serif">"P M" ---02/15/2019 03:58:32 PM---Hi experts, my problem is (I guess) a very common thing, but I somehow get stucked.</font><br>
<br>
<font size="1" color="#5F5F5F" face="sans-serif">From:      </font><font size="1" face="sans-serif">"P M" <p.muehlmann@gmail.com></font><br>
<font size="1" color="#5F5F5F" face="sans-serif">To:        </font><font size="1" face="sans-serif">"International users mailing list for Scilab." <users@lists.scilab.org></font><br>
<font size="1" color="#5F5F5F" face="sans-serif">Date:      </font><font size="1" face="sans-serif">02/15/2019 03:58 PM</font><br>
<font size="1" color="#5F5F5F" face="sans-serif">Subject:   </font><font size="1" face="sans-serif">[Scilab-users] need a little help</font><br>
<font size="1" color="#5F5F5F" face="sans-serif">Sent by:   </font><font size="1" face="sans-serif">"users" <users-bounces@lists.scilab.org></font><br>
<hr width="100%" size="2" align="left" noshade style="color:#8091A5; "><br>
<br>
<br>
<font size="3" face="serif">Hi experts,</font><br>
<br>
<font size="3" face="serif">my problem is (I guess) a very common thing, but I somehow get stucked.</font><br>
<br>
<font size="3" face="serif">I aim to find the nearest position of ANY value in array_1 to ANY position in array_2.</font><br>
<br>
<font size="3" face="serif">e.g.:</font><br>
<br>
<font size="3" face="serif">A = array of doubles with 1000 elements.</font><br>
<font size="3" face="serif">B = array of doubles with 10'000 elements.</font><br>
<br>
<font size="3" face="serif">for each element of A I want to know it's nearest value in B.</font><br>
<font size="3" face="serif">Also I want to know the index of the nearest value in B.</font><br>
<br>
<font size="3" face="serif">I could do it in a bunch of for-loops, but this is way to slow, since this loops 1000 values against 10'000 values of B.</font><br>
<br>
<font size="3" face="serif">something like this:</font><br>
<br>
<font size="3" face="serif">nearesVal   = zeros(1000);</font><br>
<font size="3" face="serif">distIndex    = zeros(1000);</font><br>
<br>
<font size="3" face="serif">for i=1:1000</font><br>
<font size="3" face="serif">  d = 1000000; // just a rediculous big number that is much greater than max(A) & max(B) </font><br>
<font size="3" face="serif">  for j = 1:10000</font><br>
<font size="3" face="serif">     act_dist = abs( A(i) - B(j) );     // actual minimal distance   </font><br>
<font size="3" face="serif">     if act_dist <= d</font><br>
<font size="3" face="serif">        d = act_dist;</font><br>
<font size="3" face="serif">        nearestVal(i) = B(j); </font><br>
<font size="3" face="serif">        distIndex(i)  = j;</font><br>
<font size="3" face="serif">      end</font><br>
<font size="3" face="serif">   end</font><br>
<font size="3" face="serif">end</font><br>
<br>
<font size="3" face="serif">I do not have Scilab at hand, while I am writing this, but it looks like it should work :-)</font><br>
<br>
<font size="3" face="serif">Thanks</font><br>
<font size="3" face="serif">Phil</font><br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<tt><font size="2">_______________________________________________<br>
users mailing list<br>
users@lists.scilab.org<br>
</font></tt><tt><font size="2"><a href="http://lists.scilab.org/mailman/listinfo/users">http://lists.scilab.org/mailman/listinfo/users</a></font></tt><tt><font size="2"><br>
</font></tt><br>
<br>
</body></html>