MarcJ said:
This runs on an embedded platform where memory is tight.
That's not good for the solution above, because the pseudeinverse is an m×m matrix. But I have another solution with an n×n matrix:
With F_k : = F\left( {x_k } \right) and f_k : = \left( {f_0 \left( {x_k } \right),f_1 \left( {x_k } \right), \ldots ,f_m \left( {x_k } \right)} \right)^T the minimization problem
\sum\limits_k {\left( {f_k^T a - F_k } \right)^2 } \Rightarrow Min.
results in
a = \left( {\sum\limits_k {f_k f_k^T } } \right)^{ - 1} \sum\limits_k {f_k F_k }
With three parameters this means
\sum\limits_k {f_k F_k } = \left( {\begin{array}{*{20}c} {\sum\limits_k {f_{1,k} \cdot F_k } } \\ {\sum\limits_k {f_{2,k} \cdot F_k } } \\ {\sum\limits_k {f_{3,k} \cdot F_k } } \\ \end{array}} \right)
and
\sum\limits_k {f_k f_k^T } = \left( {\begin{array}{*{20}c}<br />
{\sum\limits_k {f_{1,k} f_{1,k} } } & {\sum\limits_k {f_{1,k} f_{2,k} } } & {\sum\limits_k {f_{1,k} f_{3,k} } } \\<br />
{\sum\limits_k {f_{1,k} f_{2,k} } } & {\sum\limits_k {f_{2,k} f_{2,k} } } & {\sum\limits_k {f_{2,k} f_{3,k} } } \\<br />
{\sum\limits_k {f_{1,k} f_{3,k} } } & {\sum\limits_k {f_{2,k} f_{3,k} } } & {\sum\limits_k {f_{3,k} f_{3,k} } } \\<br />
\end{array}} \right): = \left( {\begin{array}{*{20}c}<br />
{S_{11} } & {S_{12} } & {S_{13} } \\<br />
{S_{12} } & {S_{22} } & {S_{23} } \\<br />
{S_{13} } & {S_{23} } & {S_{33} } \\<br />
\end{array}} \right)
and the inverse is
\left( {\begin{array}{*{20}c}<br />
{S_{11} } & {S_{12} } & {S_{13} } \\<br />
{S_{12} } & {S_{22} } & {S_{23} } \\<br />
{S_{13} } & {S_{23} } & {S_{33} } \\<br />
\end{array}} \right)^{ - 1} = \frac{1}{K} \cdot \left( {\begin{array}{*{20}c}<br />
{S_{22} S_{33} - S_{23} S_{23} } & {S_{13} S_{23} - S_{12} S_{33} } & {S_{12} S_{23} - S_{13} S_{22} } \\<br />
{S_{13} S_{23} - S_{12} S_{33} } & {S_{11} S_{33} - S_{13} S_{13} } & {S_{12} S_{13} - S_{11} S_{23} } \\<br />
{S_{12} S_{23} - S_{13} S_{22} } & {S_{12} S_{13} - S_{11} S_{23} } & {S_{11} S_{22} - S_{12} S_{12} } \\<br />
\end{array}} \right)
with
K = S_{11} \left( {S_{22} S_{33} - S_{23} S_{23} } \right) + S_{12} \left( {S_{13} S_{23} - S_{12} S_{33} } \right) + S_{13} \left( {S_{12} S_{23} - S_{13} S_{22} } \right)
The implementation in C shouldn't be very difficult.