help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Recursion


From: Thomas D. Dean
Subject: Re: Recursion
Date: Tue, 7 Mar 2017 12:24:02 -0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0

On 03/06/2017 08:25 PM, Kire Pudsje wrote:


On Tue, Mar 7, 2017 at 4:24 AM, Thomas D. Dean <address@hidden
<mailto:address@hidden>> wrote:

    On 03/06/2017 07:06 PM, Thomas D. Dean wrote:

        I have an application that is called with two points and returns the
        distance between the points and a mid point.  One example returns a
        distance of 5474.  My function is not linear.  But, a more simple
        example illustrates my problem.

    Here is a better example, which produces the output I want to save.
    The printf(...) statement displays the data I want to keep, in the
    order I want it.


Do you really want to recurse?

function [dist, mid] = gcr(p1,p2)
  p3 = p2 - p1;
  dist = sqrt(p3*p3');
  mid = (p1 + p2) ./ 2;
endfunction;

list = [1000,2000; 8000,9000];
idx = 1;
while idx < size(list,1)
  [distance, midpoint] = gcr(list(idx, :), list(idx+1, :));
  if distance > 300
    list = [list(1:idx, :); midpoint; list((idx+1):end, :)];
  else
    idx++;
  end
end


I avoided this because of list copy/allocation. My application has a larger list and this is the inner-most part of the application.

Be nice to vectorize...

Maybe the better way is to pre-allocate the list, recurse, and insert data into it where I have the print statement.

Tom Dean



reply via email to

[Prev in Thread] Current Thread [Next in Thread]