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("", "")
End

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	
End

// 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
		endif
	endif
	
	// 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
	endif
	
	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
		ProcessWave(w)
	endfor
	
	return numWavesLoaded
End

Forum

Support

Gallery

Igor Pro 10

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More