0
$\begingroup$

I have a system with 4 sensors (say $s_1..s_4$) which I want to combine into a single signal.

I have logged the 4 outputs as well as a "control" sensor ($s_c$) which has the desired ouput signal. Since $s_1..s_4$ should contain enough information to recreate the control-signal, I now try to find a (non-linear) function to describe their relationship:$f(s_1,s_2,s_3,s_4)= s_c$ (4 independent variables, 1 dependent).

I know that there are tools available for $f(x)=y$ (2D) and $f(x,y)=z$ (3D) like curve- and surface-fitting of Matlab. Downside of those is that you already need a general idea of the function to fit to, but using (high order) fourier series often give good representations.

I thought regression analysis (least-squares) might be helpful, but then a column of additional data is required for every possible term in the function. This leads to a vast amount of data, a fourier series (sin and cos for each variable) effectively would mean $2^8$ possible combinations (terms) for just the 1st order.

Long story short: I can't seem to find a tool nor a mathematical method for "5D" fitting. Is there a way to achieve this?

Any help pointing me in the right direction is very much appreciated.

$\endgroup$
1
  • $\begingroup$ I had once the software "graphpad prism" for experiments with curve fitting. I found it very good for extremely explorative situations - it also tests parameter combinations of different types of functions out of a pool of functions which you can define. When I had it (~2 years ago), one could test the software for 30 days - that fitted well for the problem which I then have had. $\endgroup$ Feb 17, 2012 at 13:36

2 Answers 2

1
$\begingroup$

You might try radial basis function interpolation. RBFs have the advantage of having the same form in any dimension.

Let's say you have $ N $ sample points $ s^j = (s_1,s_2,s_3,s_4)$, and at each one you know from your measurements that $ f(s^j) = s_c^j $.

Assume \begin{equation} f(s) = \sum_{j=1}^N c_j \phi(|s-s^j|) \end{equation} where $ \phi $ is a radial basis function.

Then you can find the coefficients $ c_j $ by solving the matrix system $ Ac = s_c $ where $ A_{ij} = \phi(|s^i - s^j|) $, that is, you enforce that the approximation goes through all the sample points.

There are many choices for the RBF but standard ones are the Gaussian $ \phi(r) = e^{(-\epsilon r)^2}$ or the multiquadric $ \phi(r) = \sqrt{1 + (\epsilon r)^2} $, where $ \epsilon $ is a parameter you get to choose based (roughly) on how closely your points are spaced.

$\endgroup$
1
$\begingroup$

Also you could try Thin plate spline (TPS) approximation. Matlab/Octave code: http://www.cs.rtu.lv/jekabsons/Files/RBF.zip

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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