CTL  0.6.1
Computed Tomography Library
Public Types | Public Member Functions | Private Attributes | Friends | List of all members
CTL::GaussianModel1D Class Reference

The GaussianModel1D class represents a one-dimensional Gaussian curve. More...

#include <datamodels1d.h>

Inheritance diagram for CTL::GaussianModel1D:
Inheritance graph
[legend]
Collaboration diagram for CTL::GaussianModel1D:
Collaboration graph
[legend]

Public Types

enum  { Type = 54 }
 
- Public Types inherited from CTL::AbstractDataModel
enum  { Type = 0 }
 
- Public Types inherited from CTL::SerializationInterface
enum  { Type = -1, UserType = 65536 }
 

Public Member Functions

int type () const override
 
float valueAt (float position) const override
 Returns the value from the model at position. More...
 
float binIntegral (float position, float binWidth) const override
 Returns the integral over model values in the interval [position - 0.5 * binWidth, position + 0.5 * binWidth]. More...
 
AbstractIntegrableDataModelclone () const override
 
 GaussianModel1D (float amplitude=1.0f, float mean=0.0f, float std=1.0f)
 Constructs a GaussianModel1D representing a one-dimensional Gaussian curve. More...
 
QVariant toVariant () const override
 
QVariant parameter () const override
 
void setParameter (const QVariant &parameter) override
 Sets the parameters contained in parameter (a QVariantMap). More...
 
- Public Member Functions inherited from CTL::AbstractIntegrableDataModel
float meanValue (float position, float binWidth) const
 
- Public Member Functions inherited from CTL::AbstractDataModel
void fromVariant (const QVariant &variant) override
 
bool isIntegrable () const
 
void setName (const QString &name)
 
const QString & name () const
 
- Public Member Functions inherited from CTL::SerializationInterface
virtual ~SerializationInterface ()=default
 

Private Attributes

float _ampl = 1.0f
 
float _mean = 0.0f
 
float _std = 1.0f
 

Friends

template<class >
struct SerializationHelper::RegisterWithSerializationHelper
 

Additional Inherited Members

- Protected Member Functions inherited from CTL::AbstractIntegrableDataModel
 AbstractIntegrableDataModel (const AbstractIntegrableDataModel &)=default
 
 AbstractIntegrableDataModel (AbstractIntegrableDataModel &&)=default
 
AbstractIntegrableDataModeloperator= (const AbstractIntegrableDataModel &)=default
 
AbstractIntegrableDataModeloperator= (AbstractIntegrableDataModel &&)=default
 
- Protected Member Functions inherited from CTL::AbstractDataModel
 AbstractDataModel (const AbstractDataModel &)=default
 
 AbstractDataModel (AbstractDataModel &&)=default
 
AbstractDataModeloperator= (const AbstractDataModel &)=default
 
AbstractDataModeloperator= (AbstractDataModel &&)=default
 
- Protected Member Functions inherited from CTL::SerializationInterface
 SerializationInterface ()=default
 
 SerializationInterface (const SerializationInterface &)=default
 
 SerializationInterface (SerializationInterface &&)=default
 
SerializationInterfaceoperator= (const SerializationInterface &)=default
 
SerializationInterfaceoperator= (SerializationInterface &&)=default
 

Detailed Description

The GaussianModel1D class represents a one-dimensional Gaussian curve.

This model maps input values according to a one-dimensional Gaussian function.

Constructor & Destructor Documentation

◆ GaussianModel1D()

CTL::GaussianModel1D::GaussianModel1D ( float  amplitude = 1.0f,
float  mean = 0.0f,
float  std = 1.0f 
)
explicit

Constructs a GaussianModel1D representing a one-dimensional Gaussian curve.

This creates a model representing a one-dimensional Gaussian function specified by amplitude, mean, and std.

std must be strictly positive, i.e. std > 0; throws an std::domain_error for invalid input.

See also
valueAt()

Member Function Documentation

◆ binIntegral()

float CTL::GaussianModel1D::binIntegral ( float  position,
float  binWidth 
) const
overridevirtual

Returns the integral over model values in the interval [position - 0.5 * binWidth, position + 0.5 * binWidth].

If the model output to input parameter \( x \) is given by \( f(x) \), this method computes and returns:

\( \begin{align*} \int_{position-\frac{binWidth}{2}}^{position+\frac{binWidth}{2}} f(x) \,dx \end{align*} \)

Implements CTL::AbstractIntegrableDataModel.

◆ clone()

AbstractIntegrableDataModel * CTL::GaussianModel1D::clone ( ) const
overridevirtual

Creates a copy of this instance and returns a base class pointer to the new object.

Implements CTL::AbstractIntegrableDataModel.

◆ parameter()

QVariant CTL::GaussianModel1D::parameter ( ) const
overridevirtual

Returns the parameters of this instance as a QVariant.

Re-implement this method within your sub-class such that it encapsulates all necessary information into a QVariant.

Best practice is to invoke the base class version of this method to take care of all content originating from underlying base classes.

A typical reimplementation in sub-classes might look like this:

QVariantMap ret = DirectBaseClass::parameter().toMap();
ret.insert("my new parameter", _myNewParameter);
return ret;

Reimplemented from CTL::AbstractDataModel.

◆ setParameter()

void CTL::GaussianModel1D::setParameter ( const QVariant &  parameter)
overridevirtual

Sets the parameters contained in parameter (a QVariantMap).

The value passed to parameter must be a QVariantMap containing one or multiple of the following (key, value)-pairs:

-("amplitude", [float] amplitude), -("mean", [float] mean), -("std", [float] std).

std must be strictly positive, i.e. std > 0; otherwise, a warning is generated and the parameter will be set to 1.0.

Example: setting mean to 3 and amplitude to 2.5

auto gaussian = std::make_shared<GaussianModel1D>();
gaussian->setParameter(QVariantMap{ { "mean", 3.0f },
{ "amplitude", 2.5f } } );

Reimplemented from CTL::AbstractDataModel.

◆ toVariant()

QVariant CTL::GaussianModel1D::toVariant ( ) const
overridevirtual

Encodes all information required to describe this instance into a QVariant.

Required to provide de-/serialization functionality.

Reimplemented from CTL::AbstractDataModel.

◆ type()

int CTL::GaussianModel1D::type ( ) const
inlineoverridevirtual

Returns the type id of this instance.

Reimplemented from CTL::AbstractDataModel.

◆ valueAt()

float CTL::GaussianModel1D::valueAt ( float  position) const
overridevirtual

Returns the value from the model at position.

With the defining parameters of the Gaussian curve according to the constructor (see GaussianModel1D()):

  • amplitude: \( A \)
  • mean: \( \mu \)
  • std: \( \sigma \)

the resulting value is given by follwoing relation:

\( f(x)= \frac{A}{\sqrt{2\pi \sigma^2}} \cdot \exp\left[-\frac{1}{2 \sigma^2} \cdot (x-\mu)^2\right] \)

Implements CTL::AbstractDataModel.


The documentation for this class was generated from the following files: