Load Space-Delimited Text File and Process Each Column

// This is an answer to the questions:
//  How do I load a space-delimited file?
//  How do I do a histogram of each loaded wave and create a graph showing the histogram?

Menu "Load Waves"
    "Load Spaced Delimited File...", LoadSpaceDelimitedFile("", "")

Function ProcessWave(w)
    Wave w
    Variable numHistBins = 10       // Desired number of bins
    String destWaveName = NameOfWave(w) + "_hist"
    Make /O /N=(numHistBins) $destWaveName
    Histogram /B=1 w, $destWaveName
    Wave dest = $destWaveName
    Display dest   

// LoadSpaceDelimitedFile(pathName, fileName)
// Returns number of waves loaded or -1 if cancel.
Function LoadSpaceDelimitedFile(pathName, fileName)
    String pathName     // Name of an Igor symbolic path or "".
    String fileName     // Name of file or full path to file.

    // First get a valid reference to a file.
    if ((strlen(pathName)==0) || (strlen(fileName)==0))
        // Display dialog looking for file.
        Variable refNum
        Open/D/R/P=$pathName refNum as fileName
        fileName = S_fileName           // S_fileName is set by Open/D
        if (strlen(fileName) == 0)          // User cancelled?
            return -1
    // Now load the data. The /V flag specifies space as delimiter.
    // Add the /A flag if you don't want the "Loading Delimited Text" dialog.
    // Add the /O flag if you want to overwrite existing waves with the same names.
    LoadWave /J /D /E=1 /K=0 /W /V={" ","",0,0} /P=$pathName fileName
    Variable numWavesLoaded = V_flag            // V_flag is set by LoadWave
    if (numWavesLoaded == 0)
        return 0
    String listOfWavesLoaded = S_waveNames  // S_waveNames is set by LoadWave
    Variable i
    for(i=0; i<numWavesLoaded; i+=1)
        String name = StringFromList(i, listOfWavesLoaded)
        Wave w = $name                          // Create wave list
    return numWavesLoaded




Igor Pro 9

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More