Deadbeat control Space-State System

74 views (last 30 days)
Pablo Graale
Pablo Graale on 31 May 2023
Answered: Sam Chak on 26 Nov 2025 at 9:51
Hi, I'm trying to test a deadbeat control (I'm a learner so please explain if you find conceptual issues as well :) ). To do that I found the gain with the acker command by setting all desired rooths in z=0. I believe this controller is used only in discrete systems. I just used it thanks to the Zero-order holder in Simulink.
Is that fine? Or is there any other fancier way to get the answer of the controller?

Answers (2)

Altaïr
Altaïr on 11 Feb 2025
The idea of placing poles at the origin of the z-plane for designing a deadbeat controller is indeed correct. It's important to remember that the origin of the z-plane corresponds to the point at negative infinity along the x-axis in the s-plane.
Therefore, it's essential to calculate the discrete open-loop system formed by the continuous plant and zero-order hold first, and then perform pole placement in the discrete domain. To convert the continuous system into a discrete one the c2d function can be used.
Additionally, the acker function, which uses Ackerman's formula for pole placement, has been replaced by the place command in more recent MATLAB versions. Here's and example snippet and model:
% Define the continuous-time system (example)
A_cont = [0 1; -2 -3];
B_cont = [0 1; 1 0];
C_cont = [1 0; 0 1];
D_cont = [0 0; 0 0];
% Define the sampling time
Ts = 0.1; % Sampling time in seconds
% Convert the continuous-time system to a discrete-time system
sys_cont = ss(A_cont, B_cont, C_cont, D_cont);
sys_disc = c2d(sys_cont, Ts, 'zoh');
% Extract the discrete-time matrices
A_disc = sys_disc.A;
B_disc = sys_disc.B;
% Define the desired poles at the origin of the z-plane
desired_poles = [0, 0];
% Compute the state feedback gain using the place function
K = place(A_disc, B_disc, desired_poles);
% Display the feedback gain
disp('State feedback gain K:');
State feedback gain K:
disp(K);
-0.9500 8.5583 9.9834 0.4750
% Closed-loop system matrices
A_cl = A_disc - B_disc * K;
sys_cl = ss(A_cl, B_disc, C_cont, D_cont, Ts);
% Plot the step response
figure;
step(sys_cl);
title('Step Response of the Closed-Loop System');
xlabel('Time (seconds)');
ylabel('Amplitude');
grid on;
To know more about the functions used in the above snippet kindly refer the following pages:

Sam Chak
Sam Chak on 26 Nov 2025 at 9:51
A deadbeat control system refers to the design of a controller that enables the system to produce a response resembling a deadbeat step response. Naturally, we expect the closed-loop system to exhibit deadbeat characteristics, specifically characterized by Hurwitz polynomials that yield deadbeat responses. Deadbeat control systems always outperform critically damped systems of the same order with identical natural frequencies in terms of settling time.
% 2nd-order deadbeat system
G2 = tf(1, [1, 1.65, 1]) % compared to tf(1, [1, 2, 1])
G2 = 1 ---------------- s^2 + 1.65 s + 1 Continuous-time transfer function.
% 3rd-order deadbeat system
G3 = tf(1, [1, 1.95, 2.25, 1]) % compared to tf(1, [1, 3, 3, 1])
G3 = 1 --------------------------- s^3 + 1.95 s^2 + 2.25 s + 1 Continuous-time transfer function.
% 4th-order deadbeat system
G4 = tf(1, [1, 2.20, 3.50, 2.80, 1]) % compared to tf(1, [1, 4, 6, 4, 1])
G4 = 1 ----------------------------------- s^4 + 2.2 s^3 + 3.5 s^2 + 2.8 s + 1 Continuous-time transfer function.
% plot results
figure
step(G2, G3, G4), grid on
legend({'$G_{2}(s)$', '$G_{3}(s)$', '$G_{4}(s)$'}, 'interpreter', 'latex', 'location', 'east', 'fontsize', 12)
Control Design Example:
% A critically-damped 2nd-order state-space (with all measurable states)
sys = ss([0, 1; -1, -2], [0; 1], eye(2), 0)
sys = A = x1 x2 x1 0 1 x2 -1 -2 B = u1 x1 0 x2 1 C = x1 x2 y1 1 0 y2 0 1 D = u1 y1 0 y2 0 Continuous-time state-space model.
% desired deadbeat poles (eigenvalues)
p2 = eig(G2) % the designer needs to know how a deadbeat transfer function looks like
p2 =
-0.8250 + 0.5651i -0.8250 - 0.5651i
% engage pole-placement
K = place(sys.A, sys.B, p2)
K = 1×2
0 -0.3500
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
% compensated system
csys= ss(sys.A - sys.B*K, [0; 1], eye(2), 0)
csys = A = x1 x2 x1 0 1 x2 -1 -1.65 B = u1 x1 0 x2 1 C = x1 x2 y1 1 0 y2 0 1 D = u1 y1 0 y2 0 Continuous-time state-space model.
% check transfer function
G = tf(csys)
G = From input to output... 1 1: ---------------- s^2 + 1.65 s + 1 s 2: ---------------- s^2 + 1.65 s + 1 Continuous-time transfer function.
% plot results
figure
step(sys, csys), grid on
legend('sys (critically-damped)', 'csys (deadbeat)', 'location', 'east', 'fontsize', 12)

Products


Release

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!