Fitting an exponential function to data

I have a noisy data set (the grey line in the graph below) that corresponds roughly to $y=m(1-2^{-x/k})$ where m and k are unknown constants.

How can I determine the best-fit value of m and k?

I can get an approximate value for k by guessing m and then doing linear regression on $-\log_2(1-y/m)$... by this I estimate m=0.96 and k=1000 (see red and blue dotted lines above), but is there a more systematic way?

Why not do nonlinear least-squares via Levenberg-Marquardt instead of futzing with linearizations? There is the lsqnonlin() function available in MATLAB via the Optimization Toolbox. You will need to figure out good starting values for $m$ and $k$, though that LM can polish to a (hopefully) adequate answer.
Thanks for this, I hadn't come across lsqnonlin() before... I'll see if I can make it work. – Richard Inglis Sep 3 '11 at 15:05