Suppose I have a wavelength array for a spectrum in units of Angstroms. Suppose further that the wavelength has "uniform logarithmic spacing" such that if I just take the difference in Angstroms between neighboring array elements i and i+1, this won't be the same as the difference in Angstroms between any other two neighboring elements j and j+1. However, if I first took the log10 of the wavelength array, then the difference between any two neighboring logarithmic array elements i and i+1 would be equal to the difference between any other logarithmic array elements j and j+1.

Now, I know a priori that this wavelength array has a velocity offset of X km/s, which I basically want to remove. How do I apply a velocity shift of -X km/s to this wavelength array which has uniform logarithmic spacing?


If you have bins of equal log wavelength increment then a velocity shift corresponds directly to a pixel shift. That is the reason for binning in equal log wavelength increments.

See this question for a short proof. All you need to do is work out what each pixel corresponds to in terms of a velocity. $$\Delta V = c\, \Delta \log \lambda$$

| improve this answer | |
  • $\begingroup$ Thanks I figured it out. The exact algorithm is: (1) take the natural log of your wavelength array in Angstroms, (2) add a velocity shift to your log-wavelength array via (c*logArray + velShift) / c, (3) convert your shifted log-wavelength array back to Angstroms by taking the exponential of it. $\endgroup$ – quantumflash Jun 17 '16 at 16:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.