StateFeedbackGains
✖
StateFeedbackGains
gives the state feedback gains for the system specification sspec to place its closed-loop poles at pi.
Details and Options




- StateFeedbackGains is also known as pole placement or eigenvalue placement.
- StateFeedbackGains is used to compute a regulating controller or tracking controller.
- StateFeedbackGains works by modifying the closed-loop system poles to be at positions pi.
- A regulating controller aims to maintain the system at an equilibrium state despite disturbances
pushing it away. Typical examples include maintaining an inverted pendulum in its upright position or maintaining an aircraft in level flight.
- The regulating controller is given by a control law of the form
, where
is the computed gain matrix.
- The number of poles n to place is given by SystemsModelOrder of the system sys.
- A tracking controller aims to track a reference signal despite disturbances
interfering with it. Typical examples include a cruise control system for a car or path tracking for a robot.
- The tracking controller is given by a control law of the form
, where
is the computed gain matrix for the augmented system that includes the system sys as well as the dynamics for
.
- The number of poles n to place is given by
, where
is given by SystemsModelOrder of sys,
the order of yref and
the number of signals yref.
- Pole placement works for linear systems as specified by StateSpaceModel:
-
continuous-time system discrete-time system - The performance of the resulting closed-loop system csys is primarily determined by the location of the poles pi.
- Typically there are performance constraints such as settling time and quality constraints such as overshoot. These correspond to certain regions that are desirable pole locations.
- The system specification sspec is the system sys together with the uf, yt and yref specifications.
- 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" sys any one of the models "FeedbackInputs" All the feedback inputs uf "TrackedOutputs" None the tracked outputs yt "TrackedSignal" Automatic the dynamics of yref - The tracked signal dynamics is given as a function of the reference signal and time variable. By default, it is assumed to be constant.
-
Function[{r, t},r'[t]] continuous-time system Function[{r,k},r[k+1]-r[k]] discrete-time system - The feedback inputs and tracked outputs can have the following forms:
-
{num1,…,numn} numbered inputs numi used by StateSpaceModel, AffineStateSpaceModel and NonlinearStateSpaceModel {name1,…,namen} named inputs namei used by SystemModel All uses 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 {"ClosedLoopSystem", cspec} detailed control over the form of the closed-loop system "ControllerModel" model cm "Design" type of controller design "DesignModel" model used for the design "FeedbackGains" gain matrix κ or its equivalent "FeedbackGainsModel" model gm or {gm1,gm2} "FeedbackInputs" inputs uf of sys used for feedback "InputModel" input model sys "InputCount" number of inputs u of sys "OpenLoopPoles" poles of "DesignModel" "OutputCount" number of outputs y of sys "SamplingPeriod" sampling period of sys "StateCount" number of states x of sys "TrackedOutputs" outputs yt of sys that are tracked - Possible keys for cspec include:
-
"InputModel" input model in csys "Merge" whether to merge csys "ModelName" name of csys - The diagram of the regulator layout.
- The diagram of the tracker layout.
- StateFeedbackGains accepts a Method option with settings given by:
-
Automatic automatic method selection "Ackermann" Ackermann method "KNVD" Kautsky–Nichols–Van Dooren method







Examples
open allclose allBasic Examples (3)Summary of the most common use cases
The feedback gains for a system specification sspec with a feedback uf and exogenous input ue:

https://wolfram.com/xid/0coknw44935agctvuxlg-cg0873

https://wolfram.com/xid/0coknw44935agctvuxlg-dkusag

https://wolfram.com/xid/0coknw44935agctvuxlg-1yltm

The feedback gains for a nonlinear system:

https://wolfram.com/xid/0coknw44935agctvuxlg-ba352z
The gains have an offset because of the nonzero operating points:

https://wolfram.com/xid/0coknw44935agctvuxlg-hrcg6r

https://wolfram.com/xid/0coknw44935agctvuxlg-bjd2eu

The gains of the approximate linearized system do not have the offset:

https://wolfram.com/xid/0coknw44935agctvuxlg-obnbd


https://wolfram.com/xid/0coknw44935agctvuxlg-bdoz58

Compare the open-loop and closed-loop poles:

https://wolfram.com/xid/0coknw44935agctvuxlg-kzoktx


https://wolfram.com/xid/0coknw44935agctvuxlg-endy04

Scope (32)Survey of the scope of standard use cases
Basic Uses (8)
Compute the state feedback gain that places the closed-loop pole at p:

https://wolfram.com/xid/0coknw44935agctvuxlg-t5t5jm

https://wolfram.com/xid/0coknw44935agctvuxlg-n0fgnt

The closed-loop system has pole p:

https://wolfram.com/xid/0coknw44935agctvuxlg-2uwzt6

Compute the gain to stabilize an unstable system:

https://wolfram.com/xid/0coknw44935agctvuxlg-bgp8e9

https://wolfram.com/xid/0coknw44935agctvuxlg-idq11v

The closed-loop system has pole :

https://wolfram.com/xid/0coknw44935agctvuxlg-tgau8w

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

https://wolfram.com/xid/0coknw44935agctvuxlg-rln5wa
Compute the state feedback gains for a multiple-state system:

https://wolfram.com/xid/0coknw44935agctvuxlg-ecq6tk

https://wolfram.com/xid/0coknw44935agctvuxlg-otxfdf

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

https://wolfram.com/xid/0coknw44935agctvuxlg-bndtk0

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

https://wolfram.com/xid/0coknw44935agctvuxlg-woplly

https://wolfram.com/xid/0coknw44935agctvuxlg-b00i4

Place the poles at conjugate pole locations:

https://wolfram.com/xid/0coknw44935agctvuxlg-klha6i

https://wolfram.com/xid/0coknw44935agctvuxlg-ysgyyj

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

https://wolfram.com/xid/0coknw44935agctvuxlg-1p4aij

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

https://wolfram.com/xid/0coknw44935agctvuxlg-vdg14t

https://wolfram.com/xid/0coknw44935agctvuxlg-ez99dq

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

https://wolfram.com/xid/0coknw44935agctvuxlg-bzger0

The first input is not used for feedback:

https://wolfram.com/xid/0coknw44935agctvuxlg-hql7tl

Choose the feedback inputs for multiple-input systems:

https://wolfram.com/xid/0coknw44935agctvuxlg-0i4ngn

https://wolfram.com/xid/0coknw44935agctvuxlg-01lb74


https://wolfram.com/xid/0coknw44935agctvuxlg-knyktm


https://wolfram.com/xid/0coknw44935agctvuxlg-nptr8e

Compute the gains for a nonlinear system:

https://wolfram.com/xid/0coknw44935agctvuxlg-gk820t
The controller is returned as a vector and takes operating points into consideration:

https://wolfram.com/xid/0coknw44935agctvuxlg-rh8rhe

The controller for the approximate linear system:

https://wolfram.com/xid/0coknw44935agctvuxlg-d9v4y2

Plant Models (6)
Continuous-time StateSpaceModel:

https://wolfram.com/xid/0coknw44935agctvuxlg-bl6t0x

Discrete-time StateSpaceModel:

https://wolfram.com/xid/0coknw44935agctvuxlg-pg9u6j

Descriptor StateSpaceModel:

https://wolfram.com/xid/0coknw44935agctvuxlg-svjmjx

AffineStateSpaceModel with no operating point is taken to be 0:

https://wolfram.com/xid/0coknw44935agctvuxlg-2sqhp9

NonlinearStateSpaceModel with no operating point is taken to be 0:

https://wolfram.com/xid/0coknw44935agctvuxlg-bbdtkg


https://wolfram.com/xid/0coknw44935agctvuxlg-priz8d

https://wolfram.com/xid/0coknw44935agctvuxlg-lz5vvi

Properties (10)
StateFeedbackGains returns the feedback gains by default:

https://wolfram.com/xid/0coknw44935agctvuxlg-b2vtn9

https://wolfram.com/xid/0coknw44935agctvuxlg-py3yi


https://wolfram.com/xid/0coknw44935agctvuxlg-n8g3ha

In general, the feedback is affine in the states:

https://wolfram.com/xid/0coknw44935agctvuxlg-s4nzmh

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

https://wolfram.com/xid/0coknw44935agctvuxlg-x99r1n

The systems model of the feedback gains:

https://wolfram.com/xid/0coknw44935agctvuxlg-6bgwzv

An affine feedback gains systems model:

https://wolfram.com/xid/0coknw44935agctvuxlg-j5u9vm


https://wolfram.com/xid/0coknw44935agctvuxlg-x5aaib

The poles of the linearized closed-loop system:

https://wolfram.com/xid/0coknw44935agctvuxlg-2x7zcn

https://wolfram.com/xid/0coknw44935agctvuxlg-8ow85o

They should be the specified poles:

https://wolfram.com/xid/0coknw44935agctvuxlg-0v269u

The model used to compute the feedback gains:

https://wolfram.com/xid/0coknw44935agctvuxlg-4p55s3

https://wolfram.com/xid/0coknw44935agctvuxlg-ddqndd

The feedback gains of the input model and the design model, respectively:

https://wolfram.com/xid/0coknw44935agctvuxlg-cmf10r


https://wolfram.com/xid/0coknw44935agctvuxlg-8rieu9

Properties related to the input model:

https://wolfram.com/xid/0coknw44935agctvuxlg-hhy36j

Get the controller data object:

https://wolfram.com/xid/0coknw44935agctvuxlg-x4pozi

The list of available properties:

https://wolfram.com/xid/0coknw44935agctvuxlg-mlfinc

The value of a specific property:

https://wolfram.com/xid/0coknw44935agctvuxlg-5hw1yx

Tracking (5)

https://wolfram.com/xid/0coknw44935agctvuxlg-5nafrb

https://wolfram.com/xid/0coknw44935agctvuxlg-jno01f

The closed-loop system tracks the reference signal :

https://wolfram.com/xid/0coknw44935agctvuxlg-labjao

Design a tracking controller for a discrete-time system:

https://wolfram.com/xid/0coknw44935agctvuxlg-6ftl55

https://wolfram.com/xid/0coknw44935agctvuxlg-w9sp0

The closed-loop system tracks the reference signal :

https://wolfram.com/xid/0coknw44935agctvuxlg-b8ov75

https://wolfram.com/xid/0coknw44935agctvuxlg-dbimu6


https://wolfram.com/xid/0coknw44935agctvuxlg-h9ptmy

https://wolfram.com/xid/0coknw44935agctvuxlg-njece0

The closed-loop system tracks two different reference signals:

https://wolfram.com/xid/0coknw44935agctvuxlg-8eqdsk

https://wolfram.com/xid/0coknw44935agctvuxlg-s73ee9

Compute the controller effort:

https://wolfram.com/xid/0coknw44935agctvuxlg-sf7r31

https://wolfram.com/xid/0coknw44935agctvuxlg-d4r25r


https://wolfram.com/xid/0coknw44935agctvuxlg-jn0yvo


https://wolfram.com/xid/0coknw44935agctvuxlg-2b6u51

https://wolfram.com/xid/0coknw44935agctvuxlg-74kmvc


https://wolfram.com/xid/0coknw44935agctvuxlg-qpbduu

Track a desired reference signal:

https://wolfram.com/xid/0coknw44935agctvuxlg-t0y6q9

The reference signal is of order 2:

https://wolfram.com/xid/0coknw44935agctvuxlg-rgy3bg


https://wolfram.com/xid/0coknw44935agctvuxlg-h17nb8

Design a controller to track one output of a first-order system:

https://wolfram.com/xid/0coknw44935agctvuxlg-uonosr

https://wolfram.com/xid/0coknw44935agctvuxlg-gazp96

The number of pole specifications is k+m q:

https://wolfram.com/xid/0coknw44935agctvuxlg-s3ojyk


https://wolfram.com/xid/0coknw44935agctvuxlg-thj9va

The closed-loop system tracks the reference:

https://wolfram.com/xid/0coknw44935agctvuxlg-7d0imb

Closed-Loop System (3)
Assemble the closed-loop system for a nonlinear plant model:

https://wolfram.com/xid/0coknw44935agctvuxlg-72bfia

https://wolfram.com/xid/0coknw44935agctvuxlg-loj504

The closed-loop system with a linearized model:

https://wolfram.com/xid/0coknw44935agctvuxlg-6ic9u2

Compare the response of the two systems:

https://wolfram.com/xid/0coknw44935agctvuxlg-blj2li

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

https://wolfram.com/xid/0coknw44935agctvuxlg-etddvq

https://wolfram.com/xid/0coknw44935agctvuxlg-qcwzrh

The unmerged closed-loop system:


https://wolfram.com/xid/0coknw44935agctvuxlg-lh5w9g

When merged, it gives the same result as before:

https://wolfram.com/xid/0coknw44935agctvuxlg-smb8sz

Explicitly specify the merged closed-loop system:

https://wolfram.com/xid/0coknw44935agctvuxlg-gqdatj

Create a closed-loop system with a desired name:

https://wolfram.com/xid/0coknw44935agctvuxlg-t8w608

https://wolfram.com/xid/0coknw44935agctvuxlg-yoybh6

The closed-loop system has the specified name:

https://wolfram.com/xid/0coknw44935agctvuxlg-srctac

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

https://wolfram.com/xid/0coknw44935agctvuxlg-q4yvjv


https://wolfram.com/xid/0coknw44935agctvuxlg-g6dmea

Options (6)Common values & functionality for each option
Method (6)
The "Ackermann" method is used by default for systems with exact or symbolic values:

https://wolfram.com/xid/0coknw44935agctvuxlg-db5rps


https://wolfram.com/xid/0coknw44935agctvuxlg-hg16j

The "KNVD" method is used by default for inexact systems:

https://wolfram.com/xid/0coknw44935agctvuxlg-dokm4l


https://wolfram.com/xid/0coknw44935agctvuxlg-73r1z

LinearSolve is used for inexact systems with at least as many inputs as states:

https://wolfram.com/xid/0coknw44935agctvuxlg-pmrsf


https://wolfram.com/xid/0coknw44935agctvuxlg-cfnde0

The "KNVD" method is typically used for multi-input systems:

https://wolfram.com/xid/0coknw44935agctvuxlg-t80goq

https://wolfram.com/xid/0coknw44935agctvuxlg-c2h3oz

The "Ackermann" method uses only one input for multi-input systems:

https://wolfram.com/xid/0coknw44935agctvuxlg-oksp2p

https://wolfram.com/xid/0coknw44935agctvuxlg-9i7c9b


https://wolfram.com/xid/0coknw44935agctvuxlg-vgsqvx

The input selected has the lowest controllability matrix condition number:

https://wolfram.com/xid/0coknw44935agctvuxlg-oz6bmu

https://wolfram.com/xid/0coknw44935agctvuxlg-stioiv

The "KNVD" closed-loop poles are less sensitive to the feedback gain perturbations than "Ackermann":

https://wolfram.com/xid/0coknw44935agctvuxlg-16ik1f

https://wolfram.com/xid/0coknw44935agctvuxlg-fnnvor

Add random perturbations to the gain matrices:

https://wolfram.com/xid/0coknw44935agctvuxlg-b061qo

The resulting closed-loop poles:

https://wolfram.com/xid/0coknw44935agctvuxlg-ep6hjj

The maximum error from the specified poles is smaller for the "KNVD" method:

https://wolfram.com/xid/0coknw44935agctvuxlg-zg0sn3

Applications (14)Sample problems that can be solved with this function
Mechanical Systems (4)
Design a balancing controller for a Segway PT:

The nonlinear model of the Segway PT:

https://wolfram.com/xid/0coknw44935agctvuxlg-evx3r8

Without a controller, the Segway's position and orientation are not balanced:

https://wolfram.com/xid/0coknw44935agctvuxlg-eo9pn6

Design a controller to balance the Segway using pole placement:

https://wolfram.com/xid/0coknw44935agctvuxlg-jezmh9

https://wolfram.com/xid/0coknw44935agctvuxlg-k9y42t


https://wolfram.com/xid/0coknw44935agctvuxlg-ba1b1m

The open-loop system was unstable:

https://wolfram.com/xid/0coknw44935agctvuxlg-evzrh3

Obtain the closed-loop system:

https://wolfram.com/xid/0coknw44935agctvuxlg-bepvd9

It is balanced from a nonzero initial position:

https://wolfram.com/xid/0coknw44935agctvuxlg-cu9cxp

So is its response to a nudge:

https://wolfram.com/xid/0coknw44935agctvuxlg-cd335h


https://wolfram.com/xid/0coknw44935agctvuxlg-dagr74

Design a regulator for a single-link robotic manipulator with a flexible joint:


https://wolfram.com/xid/0coknw44935agctvuxlg-cc8ojn

The arm's angular position is unregulated:

https://wolfram.com/xid/0coknw44935agctvuxlg-bm57ou

Design a state feedback controller:

https://wolfram.com/xid/0coknw44935agctvuxlg-gzlb32

Obtain the closed-loop system:

https://wolfram.com/xid/0coknw44935agctvuxlg-b0jz0q

The feedback controller regulates the arm's angular position:

https://wolfram.com/xid/0coknw44935agctvuxlg-6zw8c


https://wolfram.com/xid/0coknw44935agctvuxlg-bd06ik


https://wolfram.com/xid/0coknw44935agctvuxlg-fvigk6

Design a discrete-time stabilizing controller for a ball and beam system:

The linear continuous-time model of the system:

https://wolfram.com/xid/0coknw44935agctvuxlg-ibjbms

Discretize the model with a sampling period of :

https://wolfram.com/xid/0coknw44935agctvuxlg-fmmh9f

The ball's position is unstable if the beam is perturbed:

https://wolfram.com/xid/0coknw44935agctvuxlg-k7lq2h

Compute a stabilizing controller:

https://wolfram.com/xid/0coknw44935agctvuxlg-f1x4vs

Obtain the closed-loop system:

https://wolfram.com/xid/0coknw44935agctvuxlg-pw5ta2

The ball's position is stabilized:

https://wolfram.com/xid/0coknw44935agctvuxlg-dcaaty


https://wolfram.com/xid/0coknw44935agctvuxlg-f2trub

Suppress the oscillations of a two-mass damper system:


https://wolfram.com/xid/0coknw44935agctvuxlg-rm1lu

Discretize it with a sampling period of using the zero-order hold method:

https://wolfram.com/xid/0coknw44935agctvuxlg-hnt43o

The masses and
oscillate when perturbed:

https://wolfram.com/xid/0coknw44935agctvuxlg-mrkbqm

Compute state feedback gains for a set of poles within the unit circle:

https://wolfram.com/xid/0coknw44935agctvuxlg-q2bvy

Compute gains for a set of poles that are less damped:

https://wolfram.com/xid/0coknw44935agctvuxlg-fupg3z

Obtain the closed-loop systems for each set of poles:

https://wolfram.com/xid/0coknw44935agctvuxlg-nrf0d0

Compare their responses to a perturbation:

https://wolfram.com/xid/0coknw44935agctvuxlg-jd2fye

https://wolfram.com/xid/0coknw44935agctvuxlg-n4ddoy


https://wolfram.com/xid/0coknw44935agctvuxlg-m7jg1a

Compare their control efforts:

https://wolfram.com/xid/0coknw44935agctvuxlg-fav1i

Electromechanical Systems (1)
Dampen the oscillations on an angular gauge:


https://wolfram.com/xid/0coknw44935agctvuxlg-l3r6g8

A disturbance of the gauge's position results in significant oscillations:

https://wolfram.com/xid/0coknw44935agctvuxlg-4dceh

Set the current i as the feedback input:

https://wolfram.com/xid/0coknw44935agctvuxlg-fq2ux6
Design a state feedback controller to dampen the oscillations:

https://wolfram.com/xid/0coknw44935agctvuxlg-dxqp3e


https://wolfram.com/xid/0coknw44935agctvuxlg-cbwx9m

Obtain the closed-loop system:

https://wolfram.com/xid/0coknw44935agctvuxlg-lcyobu


https://wolfram.com/xid/0coknw44935agctvuxlg-jxkm0

A sinusoidal torque disturbance is also blocked by the controller:

https://wolfram.com/xid/0coknw44935agctvuxlg-mv4kkw


https://wolfram.com/xid/0coknw44935agctvuxlg-f4l1l6


https://wolfram.com/xid/0coknw44935agctvuxlg-eun3rc

Aerospace Systems (2)
Improve the handling of an aircraft's response about the longitudinal axis:


https://wolfram.com/xid/0coknw44935agctvuxlg-7yfju

Its pitch angle takes about 1500 seconds to stabilize after an initial perturbation:

https://wolfram.com/xid/0coknw44935agctvuxlg-dxbxpf

Design a controller to improve the response:

https://wolfram.com/xid/0coknw44935agctvuxlg-de8tdw

https://wolfram.com/xid/0coknw44935agctvuxlg-m75qx

Obtain the closed-loop system:

https://wolfram.com/xid/0coknw44935agctvuxlg-cln9r6

The response of the closed-loop system now stabilizes in about 10 seconds:

https://wolfram.com/xid/0coknw44935agctvuxlg-d4ej5h


https://wolfram.com/xid/0coknw44935agctvuxlg-cfjem1


https://wolfram.com/xid/0coknw44935agctvuxlg-judzj

https://wolfram.com/xid/0coknw44935agctvuxlg-gs5yth

Design an output feedback controller to regulate an orbiting satellite's trajectory:


https://wolfram.com/xid/0coknw44935agctvuxlg-ec3r9z

The orbit is unstable if perturbed:

https://wolfram.com/xid/0coknw44935agctvuxlg-ey529o

Compute a set of feedback gains:

https://wolfram.com/xid/0coknw44935agctvuxlg-lca66p

Compute a set of estimator gains:

https://wolfram.com/xid/0coknw44935agctvuxlg-c1yb3d

Assemble the estimator regulator:

https://wolfram.com/xid/0coknw44935agctvuxlg-cofutv

Obtain the closed-loop system:

https://wolfram.com/xid/0coknw44935agctvuxlg-b6qbep

Compute the response of the closed-loop system:

https://wolfram.com/xid/0coknw44935agctvuxlg-f2gy21


https://wolfram.com/xid/0coknw44935agctvuxlg-l2x7sr


https://wolfram.com/xid/0coknw44935agctvuxlg-8hkln

Electrical Systems (3)
Tune the frequency response of a circuit:

A descriptor model of the circuit:

https://wolfram.com/xid/0coknw44935agctvuxlg-b62mwf

Its step response is highly oscillatory:

https://wolfram.com/xid/0coknw44935agctvuxlg-b6dlje

The oscillatory response is due to its underdamped poles:

https://wolfram.com/xid/0coknw44935agctvuxlg-ei19m1

Design a state feedback controller with poles that are not underdamped:

https://wolfram.com/xid/0coknw44935agctvuxlg-csga9k

Obtain the closed-loop system:

https://wolfram.com/xid/0coknw44935agctvuxlg-bgn6ej


https://wolfram.com/xid/0coknw44935agctvuxlg-fzt6sh

Compare the frequency responses of the open- and closed-loop systems:

https://wolfram.com/xid/0coknw44935agctvuxlg-osgx50


https://wolfram.com/xid/0coknw44935agctvuxlg-hefe1x

Tune an active bandpass filter:

https://wolfram.com/xid/0coknw44935agctvuxlg-d69rlr

A state-space realization of the filter:

https://wolfram.com/xid/0coknw44935agctvuxlg-gc4x9w


https://wolfram.com/xid/0coknw44935agctvuxlg-nsl70

Design a set of controllers to improve the filter's characteristics:

https://wolfram.com/xid/0coknw44935agctvuxlg-c4p7dz

The more damped the poles are, the smaller the oscillations:

https://wolfram.com/xid/0coknw44935agctvuxlg-gofoqi

Design a speed controller for a DC motor:

https://wolfram.com/xid/0coknw44935agctvuxlg-kcjcr9

Set the motor speed as a tracked output:

https://wolfram.com/xid/0coknw44935agctvuxlg-f49y88

Compute a pole placement controller:

https://wolfram.com/xid/0coknw44935agctvuxlg-hz410p


https://wolfram.com/xid/0coknw44935agctvuxlg-e62p88

Assemble an estimator regulator that tracks the motor velocity:

https://wolfram.com/xid/0coknw44935agctvuxlg-ey6y2


https://wolfram.com/xid/0coknw44935agctvuxlg-bstgvm

The response to a reference speed of rpm:

https://wolfram.com/xid/0coknw44935agctvuxlg-hu3429

https://wolfram.com/xid/0coknw44935agctvuxlg-mj56l


https://wolfram.com/xid/0coknw44935agctvuxlg-cycyqn


https://wolfram.com/xid/0coknw44935agctvuxlg-6w090

Chemical Systems (2)
Improve the response of the flow rate in a mixing tank:


https://wolfram.com/xid/0coknw44935agctvuxlg-bdpdzc

The response to a disturbance in the flow rate q2 is sluggish:

https://wolfram.com/xid/0coknw44935agctvuxlg-btgxuz

Design a state feedback controller to accelerate the response:

https://wolfram.com/xid/0coknw44935agctvuxlg-ggyzg9


https://wolfram.com/xid/0coknw44935agctvuxlg-g0d3nw

The response of the closed-loop system is faster:

https://wolfram.com/xid/0coknw44935agctvuxlg-gxfq10


https://wolfram.com/xid/0coknw44935agctvuxlg-cg9y3m


https://wolfram.com/xid/0coknw44935agctvuxlg-fbfat3

Improve the response of a two-stage chemical reactor with delayed recycle:


https://wolfram.com/xid/0coknw44935agctvuxlg-hhbkwe

The reactor's response to a perturbation is delayed:

https://wolfram.com/xid/0coknw44935agctvuxlg-h23p4d

Remove the delay and obtain a minimal realization of the model:

https://wolfram.com/xid/0coknw44935agctvuxlg-ehuzay

Compute a set of regulator gains:

https://wolfram.com/xid/0coknw44935agctvuxlg-b79xv


https://wolfram.com/xid/0coknw44935agctvuxlg-fb4grr

Assemble the estimator regulator using the computed gains:

https://wolfram.com/xid/0coknw44935agctvuxlg-0lr3z

Assemble a Smith compensator for the original system:

https://wolfram.com/xid/0coknw44935agctvuxlg-eb49g

Obtain the closed-loop system of the model with the Smith compensator in the feedback path:

https://wolfram.com/xid/0coknw44935agctvuxlg-cg0btd

The closed-loop response to an initial perturbation has been improved:

https://wolfram.com/xid/0coknw44935agctvuxlg-ifx00h

Deadbeat Control (1)
Solve the deadbeat control problem for a discrete-time system:

https://wolfram.com/xid/0coknw44935agctvuxlg-s7uan
The closed-loop system with all poles at the origin:

https://wolfram.com/xid/0coknw44935agctvuxlg-flda2u

The order of the open-loop system is :

https://wolfram.com/xid/0coknw44935agctvuxlg-7bra46

Thus the closed-loop system's outputs are zero within three steps:

https://wolfram.com/xid/0coknw44935agctvuxlg-cnpfhi


https://wolfram.com/xid/0coknw44935agctvuxlg-xdqspb

Nautical Systems (1)
Design a controller for a boat to track a desired heading angle:


https://wolfram.com/xid/0coknw44935agctvuxlg-blfkrl

Design a tracking controller with poles at the desired locations:

https://wolfram.com/xid/0coknw44935agctvuxlg-jpfvki

https://wolfram.com/xid/0coknw44935agctvuxlg-iqkese


https://wolfram.com/xid/0coknw44935agctvuxlg-dmzb2s

The response for various heading angle references:

https://wolfram.com/xid/0coknw44935agctvuxlg-g5spyp


https://wolfram.com/xid/0coknw44935agctvuxlg-mrkp4x


https://wolfram.com/xid/0coknw44935agctvuxlg-cky7qo
The control effort increases as the reference value increases:

https://wolfram.com/xid/0coknw44935agctvuxlg-i8gjym

Properties & Relations (17)Properties of the function, and connections to other functions
The state feedback gains are computed for negative feedback:

https://wolfram.com/xid/0coknw44935agctvuxlg-8uio9z

https://wolfram.com/xid/0coknw44935agctvuxlg-khh89p

The closed-loop poles with negative feedback -κ.x:

https://wolfram.com/xid/0coknw44935agctvuxlg-mhugiz

They are the same as the specified poles:

https://wolfram.com/xid/0coknw44935agctvuxlg-gwwfo3

The closed-loop system is obtained using state feedback:

https://wolfram.com/xid/0coknw44935agctvuxlg-kab4jo


https://wolfram.com/xid/0coknw44935agctvuxlg-f96jnd

Obtain it directly as a property:

https://wolfram.com/xid/0coknw44935agctvuxlg-ltpav

The control effort increases as the closed-loop poles are moved further away from the open-loop poles:

https://wolfram.com/xid/0coknw44935agctvuxlg-uozxo5

https://wolfram.com/xid/0coknw44935agctvuxlg-qmsej9

For a nonlinear system the gains are affine and of the form :

https://wolfram.com/xid/0coknw44935agctvuxlg-c81l8

https://wolfram.com/xid/0coknw44935agctvuxlg-iur93b

The gains of the linearized system are linear of the form :

https://wolfram.com/xid/0coknw44935agctvuxlg-m0cejt

The affine gains are obtained by solving :

https://wolfram.com/xid/0coknw44935agctvuxlg-vjl299

All the poles of a controllable standard StateSpaceModel can be controlled using state feedback:

https://wolfram.com/xid/0coknw44935agctvuxlg-y79pg9

https://wolfram.com/xid/0coknw44935agctvuxlg-2ay05f


https://wolfram.com/xid/0coknw44935agctvuxlg-yxa3ew


https://wolfram.com/xid/0coknw44935agctvuxlg-rs40qs

The closed-loop poles are the specified poles:

https://wolfram.com/xid/0coknw44935agctvuxlg-hyivd3

All the poles of a controllable nonsingular descriptor StateSpaceModel can also be controlled:

https://wolfram.com/xid/0coknw44935agctvuxlg-ddh2mc

https://wolfram.com/xid/0coknw44935agctvuxlg-8rzopx


https://wolfram.com/xid/0coknw44935agctvuxlg-d9ce9j


https://wolfram.com/xid/0coknw44935agctvuxlg-1mbs8g

The closed-loop poles are the specified poles:

https://wolfram.com/xid/0coknw44935agctvuxlg-58sc7d

Only a subsystem of an an uncontrollable standard StateSpaceModel can be controlled:

https://wolfram.com/xid/0coknw44935agctvuxlg-3hvjdc
The eigenvalue is controllable and
is not:

https://wolfram.com/xid/0coknw44935agctvuxlg-ig0gj0

Move only the controllable eigenvalue to
:

https://wolfram.com/xid/0coknw44935agctvuxlg-52vuc9

It is not possible to move the uncontrollable eigenvalue:

https://wolfram.com/xid/0coknw44935agctvuxlg-9rmv4s


Only the poles of the controllable slow subsystem of a nonsingular descriptor can be controlled:

https://wolfram.com/xid/0coknw44935agctvuxlg-qry0id

The dimension of the slow subsystem:

https://wolfram.com/xid/0coknw44935agctvuxlg-i61hl0


https://wolfram.com/xid/0coknw44935agctvuxlg-lz9amy

The gain corresponding to the fast subsystem is :

https://wolfram.com/xid/0coknw44935agctvuxlg-8tu84k

The pole of the slow subsystem is moved to the desired location and the pole at corresponding to the fast subsystem is unchanged:

https://wolfram.com/xid/0coknw44935agctvuxlg-w46xk7

The complete system is uncontrollable and is of order less than the number of states:

https://wolfram.com/xid/0coknw44935agctvuxlg-p61v8u

None of the poles of the controllable slow subsystem of a nonsingular descriptor can be controlled:

https://wolfram.com/xid/0coknw44935agctvuxlg-1lwfx

The dimension of the slow subsystem:

https://wolfram.com/xid/0coknw44935agctvuxlg-i1m1ca


https://wolfram.com/xid/0coknw44935agctvuxlg-kpxim9

None of the poles are changed:

https://wolfram.com/xid/0coknw44935agctvuxlg-2uejqg


LQRegulatorGains and StateFeedbackGains yield the same results for a single-input system:

https://wolfram.com/xid/0coknw44935agctvuxlg-hbvbed
StateFeedbackGains with the closed-loop poles of the LQRegulatorGains design:

https://wolfram.com/xid/0coknw44935agctvuxlg-f8hxrg

LQRegulatorGains gives the same gains:

https://wolfram.com/xid/0coknw44935agctvuxlg-bo4qou

The closed-loop poles that minimize ρ c.c x(t)2+u(t)2t can be obtained using the symmetric root locus plot:

https://wolfram.com/xid/0coknw44935agctvuxlg-bz21jf
The symmetric root locus plot:

https://wolfram.com/xid/0coknw44935agctvuxlg-yb5f8j

The closed-loop poles for the parameter value :

https://wolfram.com/xid/0coknw44935agctvuxlg-bqumeo

The feedback gains to place the poles at the specified locations:

https://wolfram.com/xid/0coknw44935agctvuxlg-ke2dum

The same gains are obtained using LQRegulatorGains:

https://wolfram.com/xid/0coknw44935agctvuxlg-4ntuj4

For a StateSpaceModel, StateFeedbackGains and FullInformationOutputRegulator give the same results:

https://wolfram.com/xid/0coknw44935agctvuxlg-n27jbz

https://wolfram.com/xid/0coknw44935agctvuxlg-hn5x1d

https://wolfram.com/xid/0coknw44935agctvuxlg-cjoiaa

An estimator regulator is assembled using state feedback and estimator gain matrices:

https://wolfram.com/xid/0coknw44935agctvuxlg-n9iqfg

https://wolfram.com/xid/0coknw44935agctvuxlg-f9hp57

The estimator regulator with the computed gains:

https://wolfram.com/xid/0coknw44935agctvuxlg-772k05

State feedback gains correspond to the gain in the closed-loop system for single-input systems:

The closed-loop poles for a gain value κ:

https://wolfram.com/xid/0coknw44935agctvuxlg-dconhg

https://wolfram.com/xid/0coknw44935agctvuxlg-jpzhut

The controllable canonical state-space realization of the system:

https://wolfram.com/xid/0coknw44935agctvuxlg-xnq1k

For this realization, the state feedback gains are of the form {{κ,0,…,0}}:

https://wolfram.com/xid/0coknw44935agctvuxlg-f5ezr7

The closed-loop poles for a gain value κ:

https://wolfram.com/xid/0coknw44935agctvuxlg-pt9jdg

https://wolfram.com/xid/0coknw44935agctvuxlg-b0alig

The controllable canonical state-space realization of the system:

https://wolfram.com/xid/0coknw44935agctvuxlg-w69u5z

For this realization, the state feedback gains are of the form {{κ,0,…,0}}:

https://wolfram.com/xid/0coknw44935agctvuxlg-i9f7qy

The state feedback and estimator gains are duals of each other:

https://wolfram.com/xid/0coknw44935agctvuxlg-8aiupx

The state feedback gains of the system for a set of poles:

https://wolfram.com/xid/0coknw44935agctvuxlg-b45r4z

The estimator gains of the dual system for the conjugate set of poles:

https://wolfram.com/xid/0coknw44935agctvuxlg-rgs5n6

The state feedback gain matrix is the conjugate transpose of the estimator gain matrix and conversely:

https://wolfram.com/xid/0coknw44935agctvuxlg-6bl8o7

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

https://wolfram.com/xid/0coknw44935agctvuxlg-jvd2dy

https://wolfram.com/xid/0coknw44935agctvuxlg-c40di0

The closed-loop system for a specific set of poles:

https://wolfram.com/xid/0coknw44935agctvuxlg-lq1gkq

Both the open- and closed-loop systems block the input Sin[2t]:

https://wolfram.com/xid/0coknw44935agctvuxlg-pj40u

The closed-loop system becomes unobservable if the state feedback makes a pole and a zero coincident:

https://wolfram.com/xid/0coknw44935agctvuxlg-6hoesd

https://wolfram.com/xid/0coknw44935agctvuxlg-bcams2

The closed-loop system with the pole coinciding with the zero:

https://wolfram.com/xid/0coknw44935agctvuxlg-mqcdgs

The coincident pole-zero pair makes the closed-loop system unobservable:

https://wolfram.com/xid/0coknw44935agctvuxlg-7b3hcm

Possible Issues (5)Common pitfalls and unexpected behavior
The gains cannot be calculated for an uncontrollable system:

https://wolfram.com/xid/0coknw44935agctvuxlg-4ip8gh


https://wolfram.com/xid/0coknw44935agctvuxlg-u0owbx


An uncontrollable descriptor system:

https://wolfram.com/xid/0coknw44935agctvuxlg-ds4zzl

The dimension of the slow subsystem:

https://wolfram.com/xid/0coknw44935agctvuxlg-0l5ag

None of the poles are changed:

https://wolfram.com/xid/0coknw44935agctvuxlg-0r7ck0


The gains cannot be calculated for an unstabilizable system:

https://wolfram.com/xid/0coknw44935agctvuxlg-56s2os


The KNVD method does not handle exact systems with fewer inputs than states:

https://wolfram.com/xid/0coknw44935agctvuxlg-knil2v

https://wolfram.com/xid/0coknw44935agctvuxlg-jcq991



https://wolfram.com/xid/0coknw44935agctvuxlg-bse53e


https://wolfram.com/xid/0coknw44935agctvuxlg-08qnnv

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

https://wolfram.com/xid/0coknw44935agctvuxlg-cl3qxh

https://wolfram.com/xid/0coknw44935agctvuxlg-dendz1


https://wolfram.com/xid/0coknw44935agctvuxlg-gfo0d0

The closed-loop eigenvalues are the same:

https://wolfram.com/xid/0coknw44935agctvuxlg-7yb93


https://wolfram.com/xid/0coknw44935agctvuxlg-kfm5j1

Wolfram Research (2010), StateFeedbackGains, Wolfram Language function, https://reference.wolfram.com/language/ref/StateFeedbackGains.html (updated 2021).
Text
Wolfram Research (2010), StateFeedbackGains, Wolfram Language function, https://reference.wolfram.com/language/ref/StateFeedbackGains.html (updated 2021).
Wolfram Research (2010), StateFeedbackGains, Wolfram Language function, https://reference.wolfram.com/language/ref/StateFeedbackGains.html (updated 2021).
CMS
Wolfram Language. 2010. "StateFeedbackGains." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2021. https://reference.wolfram.com/language/ref/StateFeedbackGains.html.
Wolfram Language. 2010. "StateFeedbackGains." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2021. https://reference.wolfram.com/language/ref/StateFeedbackGains.html.
APA
Wolfram Language. (2010). StateFeedbackGains. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/StateFeedbackGains.html
Wolfram Language. (2010). StateFeedbackGains. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/StateFeedbackGains.html
BibTeX
@misc{reference.wolfram_2025_statefeedbackgains, author="Wolfram Research", title="{StateFeedbackGains}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/StateFeedbackGains.html}", note=[Accessed: 07-June-2025
]}
BibLaTeX
@online{reference.wolfram_2025_statefeedbackgains, organization={Wolfram Research}, title={StateFeedbackGains}, year={2021}, url={https://reference.wolfram.com/language/ref/StateFeedbackGains.html}, note=[Accessed: 07-June-2025
]}