Getting Started
See here for Video tutorials:
http://www.wavemetrics.com/products/igorpro/videotutorials.htm
Also Igo Pro has the full manual online as a PDF file.
Hints and Tips
Use the online forum
There are lots of useful hints and tips available at
http://www.igorexchange.com/  look there first.
Opening multiples copies of Igor
If you want to compare two experiments at the same time, open hold down the CTRL key when double clicking on the Igor Pro icon to open a second separate instance of Igor.
Exporting graphs to LaTex for papers and theses
Do not export your graph as a jpor png for use in
LaTex unless you are exporting a grayscale/colourmap, or have imported a bitmap image into your Igor graph/layout (ie a png, gif or jpeg). It will look bad in print and the journal may reject it. It also makes huge PDF files. Instead:
 Export the graph as EPS from Igor
 Make sure that the "suppress preview" checkbox is ticked
Basic graph presentationfor QEDstyle graphs

Mirror axis
should be on

Axis standoff
should be off
 Ticks should be inside (unless it is a colourmap)
Fine tweaking graphs
 Rather than trying to fine tweak a graph with the mouse, simply close the graph window.
 Igor will ask if you want to save a graph recreation macro  answer yes and give it a name  eg
nicegraph
.
 Then go to the procedure window, and there you will see all the commands to perfectly recreate your graph.
Individual items can be precisely fine tuned in the procedure.
 To recreate the graph, simply type nicegraph() at the command prompt.
Embedding one graph in another
 Ensure the graph which is to 'host' the embedded graph is active (click on the top bar for example)
 Press CntrT to bring up the tools menu
 Select "Tools" mode by clicking on the cirlce, square and line icon (Tools icon) on the left. A selection of tools should appear below the "Tools" icon.
 Anywhere on the host graph right click. Select "New >> Graph". The usual "New Graph" window will appear, select the waves for the embedded graph.
 To modify the embedded graph, click on it and from the top menu bar select "Graph >> Modify Axis" for usual modification window (i.e. to create mirroraxes and so on...). All other options should be available to you under the "Graph" menu. The embedded graph can only be modified in tools mode.
 Return to the host graph by clicking on the little graph icon located above the Tools icon. You can modify the host graph in this mode.
Different colours for different wavesin a graph
If you have a lot of waves on one graph, you can get Igor to automatically make each one a different colour:
 From Igor's Graph menu, choose Packages>Make Traces Different. (Generally useful tip: Check out the various Packages submenus when looking for something you have a feeling must be somewhere. The other place to look is in Windows>Help Windows>WM Procedures Index.)
 See http://www.igorexchange.com/node/1535 for examples of programming with this function.
How to make one axis which is a duplicate, or a function of, another axis
If you want to plot one data set with say current on the left axis and conductance on the right:
 Choose Graph>Packages>Transform Axes and click the Help button in the resulting control panel.
Embedding a LaTeX expression in their graphs, panels, layouts
See
http://www.igorexchange.com/project/LaTeXinIGOR
Arranging annotations on a graph so that they can be precisely positioned vertically and horizontally
See
http://www.igorexchange.com/project/AnnotationTools
Saving one graph and associated waves to a new experiment file
See
http://www.igorexchange.com/project/SnapIt
How to extract rows and columns from a matrix
Use the image processing function:
 Go the Analysis > Package, and select "Image Processing"
 Then the "Image" tab will appear next to the "Help" tab.
 Use the Image Line Profiles function under the "Image" Tab.
Use the map[p][n] / map[n][p] format:
 To access the nth row in a map, find out it's dimension, create a wave then assign it to map[n1][p], i.e for the 2nd row, map[1][p] (first is 0th!).
 Similarly, for nth col, use map[p][n1].
Filtering with Igor
 If you are using Igor Pro version 6 or greater, there is a Filter Design and Application control panel that comes built in to Igor. To use it, go to Analysis > Filter. Click the help button at the bottom of the panel to bring up an Igor help file with more information on how to use the panel.
 See also notes and examples here: NumericDemodulation
Differentiation
Often we need to differentiate data with Igor  e.g. to make colourmaps.
However differentiating noisy data is nontrivial. The simplest option, to take the difference between two adjacent points, generates huge noise.
So at the moment (20062010) we have been using a simple technique: fit a straight line to the data, and take the slope of that line to get the differential. This is documented here,
Differentiation_function.pdf, and the full set of files is here (
IgorDifferentiation.zip.
However these routines still generate quite noisy results. There are better ways of differentiating the data, detailed here for example:
http://www.holoborodko.com/pavel/?page_id=236. The method we have been using is perhaps similar to a leastsquares Lanczos differentiato, or a
SavitskyGolay filter  see
http://www.ipredict.it/Methods/SavitskyGolay.asp.
We could also look into doing 2D differentiation for our colour maps:
 See e.g. http://research.microsoft.com/enus/um/people/jckrumm/SavGol/SavGol.htm and
http://www.mathworks.com/matlabcentral/fileexchange/61512dsavitzkygolaydifferentiationfilter.
 Need to look up these references:
 J. W. Luo, K. Ying, P. He and J. Bai, Properties of SavitzkyGolay digital differentiators, Digital Signal Processing, (year?)
 J. E. Kuo, H. Wang, and S. Pickup, "Multidimensional LeastSquares Smoothing Using Orthogonal Polynomials," Analytical Chemistry, vol. 63, pp. 630635, 1991.
 Computation of TwoDimensional Polynomial LeastSquares Convolution Smoothing Integers," Analytical Chemistry, vol. 61, pp. 13031305, 1989.
 Does Igor do any of this in its image processing toolbox?
From the Igor Manual (Image Processing Section Vol III p301): Calculating Derivatives Using the derivative property of Fourier transform, you can calculate, for example, the xderivative of an
image in the following way:
Duplicate/O root:images:mri xDerivative // retain the original.
Redimension/S xDerivative
FFT xDerivative
xDerivative*=cmplx(0,p) // neglecting 2pi factor & wave scaling.
IFFT xDerivative
NewImage xDerivative
Although this approach may not be appealing in all applications, its advantages are apparent when you
need to calculate higher order derivatives. Also note that this approach does not take into account any wave
scaling that may be associated with the rows or the columns.
 AlexHamilton  16 Jun 2010
Write cursor values directly into waves
 Need to make the waves you want to write into first
 Need to provide the number of the point in destination waves you want the cursor values to be written into
Function CsrIntoWave (num, xWAVE, yWAVE)
WAVE xWAVE, yWAVE
Variable num
xWAVE[num]=hcsr(A)
yWAVE[num]=vcsr(A)
return 0
End