Main Content

magparams

Magnetometer sensor parameters

Description

The magparams class creates a magnetometer sensor parameters object. You can use this object to model a magnetometer when simulating an IMU with imuSensor. See the Algorithms section of imuSensor for details of magparams modeling.

Creation

Description

params = magarams returns an ideal magnetometer sensor parameters object with default values.

example

params = magparams(Name,Value) configures magparams object properties using one or more Name,Value pair arguments. Name is a property name and Value is the corresponding value. Name must appear inside single quotes (''). You can specify several name-value pair arguments in any order as Name1,Value1,...,NameN,ValueN. Any unspecified properties take default values.

Properties

expand all

Maximum sensor reading in μT, specified as a real positive scalar.

Data Types: single | double

Resolution of sensor measurements in μT/LSB, specified as a real nonnegative scalar. Here, LSB is the acronym for least significant bit.

Data Types: single | double

Constant sensor offset bias in μT, specified as a real scalar or 3-element row vector. Any scalar input is converted into a real 3-element row vector where each element has the input scalar value.

Data Types: single | double

Sensor axes skew in percentage, specified as a scalar, a 3-element row vector, or a 3-by-3 matrix. The diagonal elements of the matrix account for the misalignment effects for each axes. The off-diagonal elements account for the cross-axes misalignment effects. The measured state vmeasure is obtained from the true state vtrue via the misalignment matrix as:

vmeasure=1100Mvtrue=1100[m11m12m13m21m22m23m31m32m33]vtrue

  • If you specify the property as a scalar, then all the off-diagonal elements of the matrix take the value of the specified scalar and all the diagonal elements are 100.

  • If you specify the property as a vector [a b c], then m21 = m31 = a, m12 = m32 = b, and m13 = m23 = c. All the diagonal elements are 100.

Data Types: single | double

Power spectral density of sensor noise in μT/√Hz, specified as a real scalar or 3-element row vector. Any scalar input is converted into a real 3-element row vector where each element has the input scalar value.

Data Types: single | double

Filter coefficients for bias instability noise generation, specified as a structure. The structure has these fields:

  • Numerator — Numerator coefficients, specified as a real-valued vector.

  • Denominator — Denominator coefficients, specified as a real-valued vector.

To specify coefficients for fractal noise, use the fractalcoef function.

Example: struct(Numerator=1,Denominator=[1 -0.5])

Data Types: struct

Instability of the bias offset in μT, specified as a real scalar or 3-element row vector. Any scalar input is converted into a real 3-element row vector where each element has the input scalar value.

Data Types: single | double

Integrated white noise of sensor in (μT/√Hz), specified as a real scalar or 3-element row vector. Any scalar input is converted into a real 3-element row vector where each element has the input scalar value.

Data Types: single | double

Type of random noise, specified as:

  • "double-sided" — Random noise coefficients have a scale factor of 2.

  • "single-sided" — Random noise coefficients have a scale factor of 1.

Data Types: char | string

Sensor bias from temperature in (μT/℃), specified as a real scalar or 3-element row vector. Any scalar input is converted into a real 3-element row vector where each element has the input scalar value.

Data Types: single | double

Scale factor error from temperature in (%/℃), specified as a real scalar or 3-element row vector with values ranging from 0 to 100. Any scalar input is converted into a real 3-element row vector where each element has the input scalar value.

Data Types: single | double

Examples

collapse all

Generate magnetometer data for an imuSensor object from stationary inputs.

Generate a magnetometer parameter object with a maximum sensor reading of 1200 μT and a resolution of 0.1 μT/LSB. The constant offset bias is 1 μT. The sensor has a power spectral density of([0.60.60.9]100) μT/Hz. The bias from temperature is [0.8 0.8 2.4] μT/0C. The scale factor error from temperature is 0.1 %/0C.

params = magparams('MeasurementRange',1200,'Resolution',0.1, ...
    'ConstantBias',1,'NoiseDensity',[0.6 0.6 0.9]/sqrt(100), ...
    'TemperatureBias',[0.8 0.8 2.4],'TemperatureScaleFactor',0.1);

Use a sample rate of 100 Hz spaced out over 1000 samples. Create the imuSensor object using the magnetometer parameter object.

Fs = 100;
numSamples = 1000;
t = 0:1/Fs:(numSamples-1)/Fs;

imu = imuSensor('accel-mag','SampleRate', Fs, 'Magnetometer', params);

Generate magnetometer data from the imuSensor object.

orient = quaternion.ones(numSamples, 1);
acc = zeros(numSamples, 3);
angvel = zeros(numSamples, 3);
 
[~, magData] = imu(acc, angvel, orient);

Plot the resultant magnetometer data.

plot(t, magData)
title('Magnetometer')
xlabel('s')
ylabel('\mu T')

Figure contains an axes object. The axes object with title Magnetometer, xlabel s, ylabel mu blank T contains 3 objects of type line.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced in R2018b

expand all