
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

Forum

Support

Gallery
Igor Pro 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More