Estimate the local magnetic field vector inclination

incl = inclination(A, M, fc) % Matlab & Octave
incl <- inclination(A, M, fc = NULL)  # R 

Estimate the local magnetic field vector inclination angle directly from acceleration and magnetic field measurements.

Input var Description Unit Default value
A is the accelerometer signal matrix, A=[ax,ay,az] in any consistent unit (e.g., in g or m/s2). A can be in any frame. g or m/s2 N/A
M is the magnetometer signal matrix, M=[mx,my,mz] in any consistent unit (e.g., in uT or Gauss). M must be in the same frame as A. uT or Gauss N/A
fc (optional) specifies the cut-off frequency of a low-pass filter to apply to A and M before computing the inclination angle. The filter cut-off frequency is with respect to 1=Nyquist frequency. Filtering adds no group delay. If fc is not specified, no filtering is performed. Hz N/A
Output var Description Units
incl is the magnetic field inclination angle. radians
  • Output sampling rate is the same as the input sampling rate.
  • Frame: This function assumes a [north,east,up] navigation frame and a [forward,right,up] local frame. In these frames, the magnetic field vector has a positive inclination angle when it points below the horizon.
  • is an anti-clockwise rotation around the y-axis. Other frames can be used as long as A and M are in the same frame however the interpretation of incl will differ accordingly.

Matlab & Octave

incl = inclination([0.77 -0.6 -0.22],[22 -22 14])
incl = -0.91595 %radians.


A <- matrix(c(1, -0.5, 0.1, 0.8, -0.2, 0.6, 0.5, -0.9, -0.7),
              byrow = TRUE, nrow = 3, ncol = 3)
M <- matrix(c(1.3, -0.25, 0.16, 0.78, -0.3, 0.5, 0.5, -0.49, -0.6),
                     byrow = TRUE, nrow = 3, ncol = 3)
incl <- inclination(A, M)
incl = -0.91595 #radians. Last modified: Jan 2017

  • tagwiki/tools/processing/inclination.txt
  • Last modified: 2017/07/27 18:17
  • by das39