Looping folders to extract elements of waves?
williamychuang
I am relatively new to Igor programming, and I am trying to do the following:
I have the data structure as following:
root:data:traces:Par1
root:data:traces:Par2
root:data:traces:Par3
...
root:data:traces:ParN
Par1 to ParN are waves. and I hope to write a script that extract the elements for all Par, one element at a time. What is the right language to loop data folder? Greatly appreciated if you can help out. My current code is as attached. Thanks.
Thanks,
William
John Weeks
WaveMetrics, Inc.
support@wavemetrics.com
April 1, 2014 at 01:40 pm - Permalink
Thanks for your reply. However, I am still confused about getting the elements of data in a loop.
Say my data is in root:data:Par1:raw and root:data:Par2:raw, raw are waves with 3 elements.
Since I want to loop both the Par# and then elements within the raw of that Par#, I try something like this:
NVAR temp=root:data:Par+num2str(i)+:raw(j) // where i and j are the for loop variables, i for Par# looping, and j for raw element looping
--> basically, I want to extract the element from root:data:Par"i":raw(j)
But this doesn't work, and I wonder how to do this correctly. Thanks again.
William
April 1, 2014 at 07:33 pm - Permalink
// Create sample data for demo purposes
NewDataFolder/O root:Par0
Variable/G root:Par0:raw0 = 1000
Variable/G root:Par0:raw1 = 2000
NewDataFolder/O root:Par1
Variable/G root:Par1:raw0 = 3000
Variable/G root:Par1:raw1 = 4000
// Access the sample data
DFREF baseDFR = root: // Reference to base data folder
Variable i
for(i=0; i<=1; i+=1)
String thisDF
sprintf thisDF, "Par%d", i
DFREF dfr = baseDFR:$(thisDF) // Reference to varying data folder
Variable j
for(j=0; j<=1; j+=1)
String thisVar
sprintf thisVar, "Raw%d", j
NVAR var = dfr:$(thisVar) // Reference to global numeric variable
Print thisDF, thisVar, var
endfor
endfor
End
April 1, 2014 at 09:57 pm - Permalink
April 3, 2014 at 06:10 pm - Permalink