gives the state feedback gains for the system specification sspec to place its closed-loop poles at pi.


gives the value of the property "prop".

Details and Options

  • StateFeedbackGains is also known as pole placement gains.
  • StateFeedbackGains is typically used to stabilize a system or improve its performance.
  • The controller is typically given by state feedback , where is the computed gain matrix.
  • The inputs u of sys consists of feedback inputs uf and possibly other inputs ue.
  • The system specification sspec is the system sys together with the uf specification.
  • StateFeedbackGains works by modifying the closed-loop poles to be at positions {p1,,pn}.
  • Pole placement design works for linear systems as specified by StateSpaceModel:
  • continuous-time system
    discrete-time system
  • The system specification sspec can have the following forms:
  • StateSpaceModel[]linear control input and linear state
    AffineStateSpaceModel[]linear control input and nonlinear state
    NonlinearStateSpaceModel[]nonlinear control input and nonlinear state
    SystemModel[]general system model
    <||>detailed system specification given as an Association
  • The detailed system specification can have the following keys:
  • "InputModel"sysany one of the models
    "FeedbackInputs"Allthe feedback inputs uf
  • The feedback inputs can have the following forms:
  • {num1,,numn}numbered inputs numi used by StateSpaceModel, AffineStateSpaceModel and NonlinearStateSpaceModel
    {name1,,namen}named inputs namei used by SystemModel
    Alluses all inputs
  • For nonlinear systems such as AffineStateSpaceModel, NonlinearStateSpaceModel and SystemModel, the system will be linearized around its stored operating point.
  • StateFeedbackGains[,"Data"] returns a SystemsModelControllerData object cd that can be used to extract additional properties using the form cd["prop"].
  • StateFeedbackGains[,"prop"] can be used to directly get the value of cd["prop"].
  • Possible values for properties "prop" include:
  • "ClosedLoopPoles"poles of the linearized "ClosedLoopSystem"
    "ClosedLoopSystem"system csys with ue and as input and y as output
    {"ClosedLoopSystem", cspec}detailed control over the form of the closed-loop system
    "ControllerModel"model cm with and x as input and uf as output
    "Design"type of controller design
    "DesignModel"model used for the design
    "FeedbackGains"gain matrix κ or its equivalent
    "FeedbackGainsModel"model gm with x as input and as output
    "FeedbackInputs"inputs uf of sys used for feedback
    "InputModel"input model sys
    "InputsCount"number of inputs u of sys
    "OpenLoopPoles"poles of "DesignModel"
    "SamplingPeriod"sampling period of sys
    "StatesCount"number of states x of sys
  • Possible keys for cspec include:
  • "InputModel"input model in csys
    "Merge"whether to merge csys
    "ModelName"name of csys
  • The diagram of the feedback gains model gm, controller model cm, and closed-loop system csys.

  • StateFeedbackGains accepts a Method option with settings given by:
  • Automaticautomatic method selection
    "Ackermann"Ackermann method
    "KNVD"KautskyNicholsVan Dooren method


open allclose all

Basic Examples  (4)

Place the poles at :

Place all the eigenvalues of a discrete-time system at the origin:

Eigenvalue assignment for a two-input system:

Calculate the feedback gains for a two-input system, using the first input:

Scope  (27)

Basic Uses  (8)

Compute the state feedback gain that places the closed-loop pole at p:

The closed-loop system has pole p:

Compute the gain to stabilize an unstable system:

The closed-loop system has pole :

The unstable pole and the stabilized pole can be seen in the system's responses:

Compute the state feedback gains for a multiple-state system:

The dimensions of the result correspond to the number of inputs and the system's order:

Compute the gains for a system with 2 inputs and 3 states:

Place the poles at conjugate pole locations:

If the poles are not complex conjugate, the gains will be complex:

Place the poles at conjugate pole locations for a multiple-input system:

If the poles are not complex conjugate, the control will be complex and use only one of the inputs:

The first input is not used for feedback:

Choose the feedback inputs for multiple-input systems:

Choose the first input:

The second:

Both inputs:

Compute the gains for a nonlinear system:

The controller is returned as a vector and takes operating points into consideration:

The controller for the approximate linear system:

Plant Models  (6)

Properties  (10)

StateFeedbackGains returns the feedback gains by default:

In general, the feedback is affine in the states:

It is of the form κ0+κ1.x, where κ0 and κ1 are constants:

The systems model of the feedback gains:

An affine feedback gains systems model:

The closed-loop system:

The poles of the linearized closed-loop system:

They should be the specified poles:

The model used to compute the feedback gains:

The gains of the design model and input model:

The design method:

Properties related to the input model:

Get the controller data object:

The list of available properties:

The value of a specific property:

Closed-Loop System  (3)

Assemble the closed-loop system for a nonlinear plant model:

The closed-loop system with a linearized model:

Compare the response of the two systems:

Assemble the merged closed-loop of a plant with one disturbance and one feedback input:

The unmerged closed-loop system:

When merged, it gives the same result as before:

Explicitly specify the merged closed-loop system:

Create a closed-loop system with a desired name:

The closed-loop system has the specified name:

The name can be directly used to specify the closed-loop model in other functions:

The simulation result:

Options  (5)

Method  (5)

For systems with more inputs than states, Automatic finds the gains using LinearSolve:

For systems with exact or symbolic values, Automatic uses the "Ackermann" method:

For systems with numeric values, Automatic uses the "KNVD" method:

By default, the KNVD method is chosen for inexact inputs:

The solution using Ackermann's formula:

The KNVD method is more robust:

An inexact, multiple-input state-space model and desired closed-loop pole locations:

Find the condition number of the controllability matrix for the first input:

Find the condition number of the controllability matrix for the second input:

By default, the input with the lowest condition number is chosen:

Find gains for feedback through the second input:

Applications  (5)

Stabilize a system using state feedback:

A system with two masses, a spring, and a damper:

The choice of poles can be used to tune the response of the system:

The gain gives an overdamped response, while results in a slightly damped system:

Compute the state feedback gains to regulate an inverted pendulum about the upright position:

Displacements and of the cart and the pendulum from an initial cart position of :

The displacements are also regulated when disturbances are present:

The motion of a spacecraft linearized about a circular Kepler orbit:

Determine a set of thruster commands to regain the nominal trajectory after an initial disturbance:

The response plot:

Solve the deadbeat control problem of determining the control input required to bring the output of a discrete-time system to zero in the smallest number of time steps:

With the poles at the origin, the output of a third-order system is zero in three time steps:

Properties & Relations  (6)

A larger displacement between the open- and closed-loop poles requires a larger control effort:

The distances between the open- and closed-loop poles and the corresponding gain norms:

State feedback does not affect the input-blocking properties of a system:

The input Sin[2t] is blocked by both systems:

The closed-loop system is unobservable if the feedback moves any of the poles to the zeros:

The system ssm has a zero at the pole location -4:

For a nonsingular descriptor system, all the closed-loop poles can be placed.

For a singular system that is controllable, only MatrixRank[e] poles can be placed:

An impulsive system where only the slow subsystem is controllable:

Only the poles of the slow system can be placed:

Possible Issues  (3)

The KNVD method can give different sets of gains on different computer systems:

The closed-loop eigenvalues are the same:

For a MIMO system, the Ackermann method uses only one of the inputs as the feedback input:

With the default KNVD method, the control effort is shared between all the feedback inputs:

Arbitrary pole assignment by state feedback requires a controllable model:

Verify controllability:

Wolfram Research (2010), StateFeedbackGains, Wolfram Language function, (updated 2021).


Wolfram Research (2010), StateFeedbackGains, Wolfram Language function, (updated 2021).


@misc{reference.wolfram_2021_statefeedbackgains, author="Wolfram Research", title="{StateFeedbackGains}", year="2021", howpublished="\url{}", note=[Accessed: 02-August-2021 ]}


@online{reference.wolfram_2021_statefeedbackgains, organization={Wolfram Research}, title={StateFeedbackGains}, year={2021}, url={}, note=[Accessed: 02-August-2021 ]}


Wolfram Language. 2010. "StateFeedbackGains." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2021.


Wolfram Language. (2010). StateFeedbackGains. Wolfram Language & System Documentation Center. Retrieved from