Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado
I'm not entirely sure how best to phrase what I am trying to do but essentially I am trying to find a function that does something like this (but without the loop): x = findgen(5) y = x for i = 0, 100 do y = [y, x] So I then have an array [0,1,2,3,4,0,1,2,3,4...] 100 times. Is there a way of doing this without the loop? Thanks!
On Friday, April 24, 2015 at 5:02:42 PM UTC-6, Joe Llama wrote: > I'm not entirely sure how best to phrase what I am trying to do but essentially I am trying to find a function that does something like this (but without the loop): > > x = findgen(5) > y = x > for i = 0, 100 do y = [y, x] > > So I then have an array [0,1,2,3,4,0,1,2,3,4...] 100 times. Is there a way of doing this without the loop? > > Thanks! This would probably work. It's not very readable, but it's only one line. Your code produces a 510 element array, so I used rebin with 102 as the second dimension then flattend it. I don't know how memory efficient this is. z=(rebin(x,5,102))[*] You can check if it's the same. I ran your example and calculated the sum of squared differences to be 0. print,total((z-y)^2) 0.00000 Don
On Friday, April 24, 2015 at 7:20:51 PM UTC-4, don.wo...@gmail.com wrote: > On Friday, April 24, 2015 at 5:02:42 PM UTC-6, Joe Llama wrote: > This would probably work. It's not very readable, but it's only one line. Your code produces a 510 element array, so I used rebin with 102 as the second dimension then flattend it. I don't know how memory efficient this is. > > z=(rebin(x,5,102))[*] Perhaps slightly more readable (or perhaps not) is z = reform(rebin(x,5,102),510) It is worth mentioning here one of the classics of the IDL literature, JD Smith's "Dimension Juggling Tutorial": http://www.idlcoyote.com/tips/rebin_magic.html
> z=(rebin(x,5,102))[*] This is exactly how VECREP in JBIU does it. -Jeremy.
On Friday, April 24, 2015 at 7:02:42 PM UTC-4, Joe Llama wrote: > I'm not entirely sure how best to phrase what I am trying to do but essentially I am trying to find a function that does something like this (but without the loop): > > x = findgen(5) > y = x > for i = 0, 100 do y = [y, x] > > So I then have an array [0,1,2,3,4,0,1,2,3,4...] 100 times. Is there a way of doing this without the loop? > > Thanks! I fully endorse the other answers as better than this. But given what yo wrote, you might also consider the "mod" operator: x= findgen(500) mod 5 -Russell
On Monday, April 27, 2015 at 8:41:15 AM UTC-5, rryan%s...@gtempaccount.com wrote: > On Friday, April 24, 2015 at 7:02:42 PM UTC-4, Joe Llama wrote: >> I'm not entirely sure how best to phrase what I am trying to do but essentially I am trying to find a function that does something like this (but without the loop): >> >> x = findgen(5) >> y = x >> for i = 0, 100 do y = [y, x] >> >> So I then have an array [0,1,2,3,4,0,1,2,3,4...] 100 times. Is there a way of doing this without the loop? >> >> Thanks! > > I fully endorse the other answers as better than this. But given what yo wrote, you might also consider the "mod" operator: > > x= findgen(500) mod 5 > > -Russell You probably really want indgen or lindgen -- taking the modulus of a float isn't a good idea and can cause unwanted results! -Jeremy.
On Monday, April 27, 2015 at 11:10:54 AM UTC-4, Jeremy Bailin wrote: > On Monday, April 27, 2015 at 8:41:15 AM UTC-5, rryan%s...@gtempaccount.com wrote: >> On Friday, April 24, 2015 at 7:02:42 PM UTC-4, Joe Llama wrote: >>> I'm not entirely sure how best to phrase what I am trying to do but essentially I am trying to find a function that does something like this (but without the loop): >>> >>> x = findgen(5) >>> y = x >>> for i = 0, 100 do y = [y, x] >>> >>> So I then have an array [0,1,2,3,4,0,1,2,3,4...] 100 times. Is there a way of doing this without the loop? >>> >>> Thanks! >> >> I fully endorse the other answers as better than this. But given what yo wrote, you might also consider the "mod" operator: >> >> x= findgen(500) mod 5 >> >> -Russell > > You probably really want indgen or lindgen -- taking the modulus of a float isn't a good idea and can cause unwanted results! > > -Jeremy. No, you're right. I was being a bit cavalier and working without actually testing anything. But one should probably use rebin() for this purpose. I just thought mod was worth mentioning because the problem may need to be generalized to another environment where rebin() isn't an option.