comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » set all elements in 2d array between some range to 1
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
set all elements in 2d array between some range to 1 [message #91006] Fri, 22 May 2015 14:14 Go to previous message
havok2063 is currently offline  havok2063
Messages: 24
Registered: December 2012
Junior Member
So I'm trying to set all elements of a 2d-array that are between some padding, based off elements in another vector, to 1. Creating a mask of 1's and 0's.

I want to turn this bit of code, which runs in 30 seconds, into a non-loop bit of code that runs faster.

wave = 2d array of floats - size [4112,709]
skywave = 1d array of floats - size [739]

nx = 4112
ny =709
nlines = 739
skylinemask = intarr(nx,ny) ; output 2d array of 1's and 0's

for j = 0, nlines-1 do begin
index = where( (wave gt skywave[j]-3) and (wave lt skywave[j]+3), nindex)
if (nindex gt 0) then skylinemask[index] = 1
endfor

I've started tackling this with value_locate but I got stuck.

waved = wave[*]
uniwave = sort(waved)
minskywave = skywave - 3
maxskywave = skywave + 3

v1 = value_locate(minskywave, waved[uniwave])
v2 = value_locate(maxskywave, waved[uniwave])

Any ideas on how to finish this? Or a simpler way than what I'm attempting. Thanks.
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Function graphics and IDL widgets
Next Topic: Identify whether value is integer in IF statement

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Sat Oct 11 04:29:57 PDT 2025

Total time taken to generate the page: 0.16296 seconds