slang-users mailing list

[2005 Date Index] [2005 Thread Index] [Other years]
[Thread Prev] [Thread Next]      [Date Prev] [Date Next]

Re: [slang-users] push array structure into slang


Thanks John. That approach works.

-joe

--- "John E. Davis" <davis@xxxxxxxxxxxxx> wrote:

> Joe Miller <lpe540@xxxxxxxxx> wrote:
> >I have a c function that returns an array of C
> >structures and I'd like to push onto slang. I've
> tried
> >to do this a bunch of different ways and have to
> find
> >a way that works. I was wondering if anyone had any
> >suggestions.
> 
> I will try to followup with an example of how to do
> this when time
> permits.  However, in your case I think it is more
> important to
> reconsider your approach.  
> 
> Obviously, in C scope you have a set of (x,y) points
> stored as an
> array of structs.  I strongly urge you not to use
> this representation
> in S-Lang scope because it will defeat the purpose
> of slang's array
> handling.  Instead I recommend that you return a
> single struct with
> with two array-valued x, y fields. With such a
> representation,
> filtering would be trivial, e.g.,
> 
>    pnts = your_function (...);
>    i = where ((pnts.x < xmin) or (pnts.x >= xmax));
>    bad_x = pnts.x[i];
>       .
>       .
> 
> Also it would be possible to trivally pass such data
> to functions that
> expect arrays, e.g.,
> 
>    mean_x = sum (pnts.x)/length(pnts.x);
> 
> or even
> 
>    require ("gsl");
> 
>    % Add some noise
>    sigma = sqrt (pnts.y);
>    pnts.y += ran_gaussian (sigma, length (pnts.y));
> 
> None of the above operations would be simple in your
> array-of-structs
> approach.
> 
> I hope this helps. 
> Good luck,
> --John
> 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

_______________________________________________
To unsubscribe, visit http://jedsoft.org/slang/mailinglists.html


[2005 date index] [2005 thread index]
[Thread Prev] [Thread Next]      [Date Prev] [Date Next]