Extracting common values and there indices from two waves
varun.kumar
I have two waves of different dimensions. Both these have few overlapping/same values but at different locations .e.g., the 4th index of wave 1 might be the same as the 6th index of wave 2, etc.I am looking to extract these common values from 2 waves and also the indices where they lie on the larger waves. Do you have any suggestions on how can I do that? I tried functions like binary search or find value but they don’t seem to do the desired job
A surefire but slow way to do this is to loop over the smaller wave and check whether each point gives any result with FindValue applied on the larger wave. If V_value is different from -1 note both the position and the current search value in a separate result wave.
January 6, 2021 at 02:20 am - Permalink
In reply to A surefire but slow way to… by chozo
You can use Extract with the /INDX flag, searching for each value in your smaller wave one at a time.
As an example, try this:
Make/O/I myData = {1,4,6,2,4,3,2,6,5,2}
Make/O/I mySearch = {4,2}
Make/O/I/N=0 myResult
variable i
Make/FREE/I myTempResult
for(i = 0; i < DimSize(mySearch, 0); i += 1)
Extract/FREE/INDX myData, myTempResult, myData==mySearch[i]
Concatenate {myTempResult}, myResult
endfor
End
You can easily extend this to give the matching value as well.
January 6, 2021 at 03:06 am - Permalink