Load Waves and Append
hrodstein
// LoadWavesAndAppend(pathName, fileName)
// Loads waves from the specified file into a temporary data folder.
// Then, if the waves already existed in the original current data folder, this routine
// appends the new data to the old waves.
// If the waves did not already exist, it just moves the new waves into the original current data folder.
// Returns the number of waves loaded.
// You will need to customize this routine by using the LoadWave flags appropriate for your files.
// pathName is the name of an Igor symbolic path. If you pass "" for it Igor will display an Open File dialog.
// If you don't want a dialog you must create the symbolic path before calling this function.
// If you are not familiar with Igor symbolic paths, execute this for help:
// DisplayHelpTopic "Symbolic Paths"
Function LoadWavesAndAppend(pathName, fileName)
String pathName // Igor symbolic path name or "" for dialog.
String fileName // File name or "" for dialog.
DFREF dfSave = GetDataFolderDFR()
NewDataFolder/O/S tempLoad // Load new waves in here.
LoadWave/P=$pathName/J fileName
if (V_flag <= 0)
SetDataFolder dfSave
KillDataFolder : // Kill tempLoad data folder.
return 0 // Cancel
endif
// Now append the loaded waves to like-named waves in the parent data folder.
Variable numWavesLoaded = 0
String list = S_waveNames // List of loaded waves.
Variable i = 0
do
String name = StringFromList(i, list)
if (strlen(name) == 0)
break // No more
endif
Wave wNew = $name
String twin = "::" + PossiblyQuoteName(name) // Path to like named wave in parent data folder.
Wave/Z wOld = $twin
if (WaveExists(wOld))
Variable oldPoints = numpnts(wOld)
Variable newPoints = numpnts(wNew)
InsertPoints oldPoints, newPoints, wOld
if (WaveType(wOld) == 0) // Text wave?
Wave/T tNew = $name
Wave/T tOld = $twin
tOld[oldPoints, oldPoints+newPoints-1] = tNew[p-oldPoints]
else
wOld[oldPoints, oldPoints+newPoints-1] = wNew[p-oldPoints]
endif
else
// Wave does not exist in parent data folder.
MoveWave wNew, :: // Move into parent data folder.
endif
numWavesLoaded += 1
i += 1
while(1)
KillDataFolder : // Kill tempLoad data folder.
SetDataFolder dfSave
return numWavesLoaded
End
// Loads waves from the specified file into a temporary data folder.
// Then, if the waves already existed in the original current data folder, this routine
// appends the new data to the old waves.
// If the waves did not already exist, it just moves the new waves into the original current data folder.
// Returns the number of waves loaded.
// You will need to customize this routine by using the LoadWave flags appropriate for your files.
// pathName is the name of an Igor symbolic path. If you pass "" for it Igor will display an Open File dialog.
// If you don't want a dialog you must create the symbolic path before calling this function.
// If you are not familiar with Igor symbolic paths, execute this for help:
// DisplayHelpTopic "Symbolic Paths"
Function LoadWavesAndAppend(pathName, fileName)
String pathName // Igor symbolic path name or "" for dialog.
String fileName // File name or "" for dialog.
DFREF dfSave = GetDataFolderDFR()
NewDataFolder/O/S tempLoad // Load new waves in here.
LoadWave/P=$pathName/J fileName
if (V_flag <= 0)
SetDataFolder dfSave
KillDataFolder : // Kill tempLoad data folder.
return 0 // Cancel
endif
// Now append the loaded waves to like-named waves in the parent data folder.
Variable numWavesLoaded = 0
String list = S_waveNames // List of loaded waves.
Variable i = 0
do
String name = StringFromList(i, list)
if (strlen(name) == 0)
break // No more
endif
Wave wNew = $name
String twin = "::" + PossiblyQuoteName(name) // Path to like named wave in parent data folder.
Wave/Z wOld = $twin
if (WaveExists(wOld))
Variable oldPoints = numpnts(wOld)
Variable newPoints = numpnts(wNew)
InsertPoints oldPoints, newPoints, wOld
if (WaveType(wOld) == 0) // Text wave?
Wave/T tNew = $name
Wave/T tOld = $twin
tOld[oldPoints, oldPoints+newPoints-1] = tNew[p-oldPoints]
else
wOld[oldPoints, oldPoints+newPoints-1] = wNew[p-oldPoints]
endif
else
// Wave does not exist in parent data folder.
MoveWave wNew, :: // Move into parent data folder.
endif
numWavesLoaded += 1
i += 1
while(1)
KillDataFolder : // Kill tempLoad data folder.
SetDataFolder dfSave
return numWavesLoaded
End
Forum
Support
Gallery
Igor Pro 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More