How can I compute the Frequency Response Function (FRF) if I use two three-axis MEMS accelerometer to measure the input excitation and output response?

I have read from some books that the FRF can be computed as the ratio of response to excitation, e.g., $ H(s) = x(s)/F(s)$, where $s$ is the Laplace variable. or a similar way via Fourier transform.

However, those books have not mentioned how to compute FRF when it comes to three-axis accelerometer. As there are three channels of data, i.e., X, Y, Z, should I compute the FRF for each channel separately, or I need to perform some kind of combination of these three axes before computing the FRF?


2 Answers 2


The body of your question (the title is somewhat different) asks about computing the frequency response function (FRF) between a multi-input, multi-output (MIMO) system. First off, the numerical transfer function/FRF between two time domain signals is usually calculated by calculating the cross power spectrum between the two signals and dividing it by the power spectrum of the input $$ FRF_{A\rightarrow B}=\frac{S_{AB}(f)}{S_{AA}(f)}. $$ National Instruments Application Note 41 has a helpful introduction to this type of analysis. It is important to also calculate the coherence of the input and output signals so that you have an idea of how accurate the estimated transfer function is.

To answer your question about how to deal with a MIMO system; usually people think about it as a matrix of transfer functions. In your case there will be 9 independent transfer functions: $$ \begin{pmatrix} FRF_{x\rightarrow x} & FRF_{x\rightarrow y} & FRF_{x\rightarrow z} \\ FRF_{y\rightarrow x} & FRF_{y\rightarrow y} & FRF_{y\rightarrow z} \\ FRF_{z\rightarrow x} & FRF_{z\rightarrow y} & FRF_{z\rightarrow z} \end{pmatrix} $$ Understanding how any excitation shows up at the output is then just a matter of multiplying the x, y, and z inputs (expressed in the frequency domain) by the transfer function matrix.

  • $\begingroup$ really thanks for your reply. One more question, doesn't the MIMO test mean that using multiple excitations and listening response at different positions with multiple transducers? In my scenario, I only use one excitation (attached with a three-axis accelerometer) and capture one response via another three-axis accelerometer. Is this also a kind of MIMO test? $\endgroup$
    – ice_lin
    Commented Sep 11, 2015 at 2:29
  • $\begingroup$ @ice_lin I don't exactly understand how you apply the excitation, but it is possible to do the test with a single excitation. Since you are measuring both the input and output with accelerometers, it is only necessary that the excitation excite all of the modes that you are interested in. If your excitation only excites along one axis, then you will need to excite along each axis individually and make three separate measurements though. $\endgroup$ Commented Sep 11, 2015 at 13:47
  • $\begingroup$ I only have single excitation installed at one location, which excites along X, Y, Z axis simultaneously. Thus, I attach an three-axis accelerometer to measure the input excitation. Also, to capture the response, another three-axis accelerometer is used. Is this a kind of MIMO test? $\endgroup$
    – ice_lin
    Commented Sep 12, 2015 at 14:34
  • 1
    $\begingroup$ @ice_lin Yes, that is a MIMO test. The accuracy of the measured transfer functions will be captured when you calculate the coherence between the input accelerometer and the output accelerometer. $\endgroup$ Commented Sep 12, 2015 at 15:11

Disclaimer: Base on the question, I am suspecting you are looking for a theoretical explanation. Unfortunately I am not in a position offer any insight in short order.

But I can offer you following two ideas and source code to access data from three axis ADXL345 accelerometer to help you with your endeavors.

Three axis ADXL345 accelerometer implementation using a Embedded Linux platform

Three axis ADXL345 accelerometer implementation using a TIVA ARM Cortex M4

Your are welcome to fork the source code and use them as you wish.

Also I suggest that you use a rate table to generate the input input excitation. Below is a suggestion.

3-axis Rate table

Hope this post with combination of theoretical explanation will give you total solution.



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.