How to select one of 24 numbered waves: wave0, wave1.....wave23

After loading a JCAMP.dx file I get 24 waves numbered wave0, wave1......wave23.

I want to calculate the difference between 2 of such sets using a loop but I don't see how to select each wave.

 

A good way to organize your data sets is to load each dataset (wave0..wave23) into a separate data folder. If you are not familiar with data folders, execute:

DisplayHelpTopic "Data Folders"

The way to address waves in a loop is to use the $ operator to create a wave reference from a string containing a wave name. If you are not familiar with wave references, execute:

DisplayHelpTopic "Wave References"

and

DisplayHelpTopic "Accessing Global Variables And Waves"

Here is an example that creates two datasets, each in its own data folder, and then creates a third data folder containing difference waves:

Function MakeDemoWaves(int n)
    String name
    int i

    // Make n demo waves in data folder dfA
    NewDataFolder/O/S dfA
    for(i=0; i<n; i+=1)
        sprintf name, "wave%d", i
        Make/O $name = i + p
    endfor
    SetDataFolder ::

    // Make n demo waves in data folder dfB
    NewDataFolder/O/S dfB
    for(i=0; i<n; i+=1)
        sprintf name, "wave%d", i
        Make/O $name = i + p
    endfor
    SetDataFolder ::
End


// Example:
//  MakeDemoWaves(3)
//  DemoDifWaves(3, dfA, dfB)
Function DemoDifWaves(int n, DFREF dfA, DFREF dfB)
    String name
    int i

    NewDataFolder/O dfDif
    DFREF dfDif = :dfDif
   
    // Create difference waves in current data folder
    for(i=0; i<n; i+=1)
        sprintf name, "wave%d", i
        WAVE aWave = dfA:$name
        WAVE bWave = dfA:$name
       
        String difName
        sprintf difName, "difAB_%d", i
        Duplicate/O aWave, dfDif:$difName
        WAVE difWave = dfDif:$difName
       
        difWave = bWave - aWave
    endfor
End