Reorder Waves in Data Folder
hrodstein
// ReorderWavesInDataFolder(dRef, baseName, sortOptions)
// Reorders the waves in the data folder specified by dRef so that they are sorted.
//
// When you iterate through waves in a given data folder, Igor returns the waves
// in the order in which they were added to the data folder. Sometimes a procedures
// needs the waves to be in a certain order. This achieves that by temporarily moving
// the waves out of the original data folder to a temporary data folder and then moving
// them back to the original data folder in the desired order.
//
// All waves in the specified data folder whose names begin with the specified base name are reordered.
// Pass "" for baseName to reorder all waves in the data folder.
//
// See the SortList function for the meaning of the sortOptions parameter.
//
// Here is an example:
// NewDataFolder/O/S root:TestDataFolder
// Make/O xWave3, xWave7, xWave1, xWave0, xWave15, xWave11
// Make/O yWave0, yWave7, yWave1, yWave3, yWave15, yWave11
// ReorderWavesInDataFolder(dRef, "xWave", 16)
// ReorderWavesInDataFolder(dRef, "yWave", 16)
Function ReorderWavesInDataFolder(dRef, baseName, sortOptions)
DFREF dRef
String baseName
Variable sortOptions // As for SortList function
String tempDFName = "%tempForReorderWavesInDF%"
NewDataFolder /O dRef:$tempDFName
DFREF tempDF = dRef:$tempDFName
String waveNames = WaveList(baseName+"*", ";", "")
String sortedWaveNames = SortList(waveNames, ";", sortOptions)
// Move waves to temp data folder
Variable numWaves = itemsInList(waveNames)
String name
Variable i
for(i=0; i<numWaves; i+=1)
name = StringFromList(i, sortedWaveNames)
MoveWave dRef:$name, tempDF
endfor
// Move waves back to original data folder
for(i=0; i<numWaves; i+=1)
name = StringFromList(i, sortedWaveNames)
MoveWave tempDF:$name, dRef
endfor
KillDataFolder tempDF
End
// Reorders the waves in the data folder specified by dRef so that they are sorted.
//
// When you iterate through waves in a given data folder, Igor returns the waves
// in the order in which they were added to the data folder. Sometimes a procedures
// needs the waves to be in a certain order. This achieves that by temporarily moving
// the waves out of the original data folder to a temporary data folder and then moving
// them back to the original data folder in the desired order.
//
// All waves in the specified data folder whose names begin with the specified base name are reordered.
// Pass "" for baseName to reorder all waves in the data folder.
//
// See the SortList function for the meaning of the sortOptions parameter.
//
// Here is an example:
// NewDataFolder/O/S root:TestDataFolder
// Make/O xWave3, xWave7, xWave1, xWave0, xWave15, xWave11
// Make/O yWave0, yWave7, yWave1, yWave3, yWave15, yWave11
// ReorderWavesInDataFolder(dRef, "xWave", 16)
// ReorderWavesInDataFolder(dRef, "yWave", 16)
Function ReorderWavesInDataFolder(dRef, baseName, sortOptions)
DFREF dRef
String baseName
Variable sortOptions // As for SortList function
String tempDFName = "%tempForReorderWavesInDF%"
NewDataFolder /O dRef:$tempDFName
DFREF tempDF = dRef:$tempDFName
String waveNames = WaveList(baseName+"*", ";", "")
String sortedWaveNames = SortList(waveNames, ";", sortOptions)
// Move waves to temp data folder
Variable numWaves = itemsInList(waveNames)
String name
Variable i
for(i=0; i<numWaves; i+=1)
name = StringFromList(i, sortedWaveNames)
MoveWave dRef:$name, tempDF
endfor
// Move waves back to original data folder
for(i=0; i<numWaves; i+=1)
name = StringFromList(i, sortedWaveNames)
MoveWave tempDF:$name, dRef
endfor
KillDataFolder tempDF
End
Forum
Support
Gallery
Igor Pro 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More