Discrete state-space helps us understand how systems change step-by-step over time using simple math. It breaks down complex systems into small, easy-to-follow parts.
Modeling how a robot moves in steps based on commands.
Predicting the temperature changes in a room every minute.
Controlling a car's speed using digital signals.
Simulating financial data that updates daily.
Designing digital filters for audio signals.
Syntax
Simulink
x[k+1] = A * x[k] + B * u[k]
y[k] = C * x[k] + D * u[k]
x[k] is the state at step k (current state).
u[k] is the input at step k.
y[k] is the output at step k.
A, B, C, D are matrices that define system behavior.
Examples
Simple one-step update with scalar values.
Simulink
A = [0.7];
B = [0.2];
C = [1];
D = [0];
x[0] = 0;
u[0] = 1
x[1] = A * x[0] + B * u[0]
y[0] = C * x[0] + D * u[0]
Two-dimensional state example for position and velocity.
Simulink
A = [[1, 0.1], [0, 1]]
B = [[0], [0.1]]
C = [1, 0]
D = [0]
x[0] = [0, 0]
u[0] = 1
x[1] = A * x[0] + B * u[0]
y[0] = C * x[0] + D * u[0]
Sample Program
This code simulates a discrete state-space system for 5 steps. It shows how the state and output change with each input.
Simulink
import numpy as np
# Define system matrices
A = np.array([[0.9, 0.1], [0, 0.8]])
B = np.array([[0.1], [0.2]])
C = np.array([[1, 0]])
D = np.array([[0]])
# Initial state
x = np.array([[0], [0]])
# Input sequence (5 steps)
u = np.array([[1], [0], [1], [0], [1]])
# Lists to store states and outputs
states = [x]
outputs = []
for k inrange(len(u)):
x = A @ x + B @ u[k]
y = C @ x + D @ u[k]
states.append(x)
outputs.append(y)
# Print resultsfor i, (state, output) inenumerate(zip(states[1:], outputs)):
print(f"Step {i+1} state:\n{state.flatten()}\nOutput: {output.flatten()[0]:.2f}\n")
OutputSuccess
Important Notes
Make sure matrix sizes match to avoid errors.
Discrete means the system updates at fixed steps, like frames in a video.
Initial state is important to start the simulation correctly.
Summary
Discrete state-space models systems step-by-step using matrices.
It helps predict system behavior over time with inputs and states.
Useful for digital control and simulations in many fields.
Practice
(1/5)
1. What does a discrete state-space model in Simulink primarily represent?
easy
A. A continuous-time system with differential equations
B. A graphical user interface for designing circuits
C. A system described by matrices that updates states step-by-step
D. A tool for creating 3D animations
Solution
Step 1: Understand discrete state-space concept
Discrete state-space models describe systems using matrices that update the system's state at each time step.
Step 2: Compare options
Only a system described by matrices that updates states step-by-step correctly describes this concept; others describe unrelated tools or continuous systems.
Final Answer:
A system described by matrices that updates states step-by-step -> Option C
Quick Check:
Discrete state-space = step-by-step matrix system [OK]
Hint: Discrete means step-by-step matrix updates [OK]
Common Mistakes:
Confusing discrete with continuous systems
Thinking state-space is only for continuous models
Mixing up state-space with graphical tools
2. Which of the following is the correct syntax to define a discrete state-space system in Simulink's MATLAB Function block?
easy
A. sys = ss(A, B, C, D);
B. sys = ss(A, B, C, D, Ts);
C. sys = discrete(A, B, C, D, Ts);
D. sys = state_space(A, B, C, D, Ts);
Solution
Step 1: Recall syntax for discrete state-space
In MATLAB/Simulink, discrete state-space systems use ss(A,B,C,D,Ts) where Ts is the sample time.
Step 2: Evaluate options
sys = ss(A, B, C, D, Ts); matches the correct syntax. sys = ss(A, B, C, D); misses Ts (sample time), C and D use incorrect function names.
Final Answer:
sys = ss(A, B, C, D, Ts); -> Option B
Quick Check:
Discrete ss needs sample time Ts [OK]
Hint: Discrete ss needs sample time Ts as last argument [OK]
Common Mistakes:
Omitting the sample time Ts
Using wrong function names like discrete()
Confusing continuous and discrete syntax
3. Given the discrete state-space matrices: A = [[0.7, 0.2], [0, 0.9]]; B = [[0.1], [0.05]]; and initial state x0 = [1; 0], what is the state x[1] after one step with input u[0] = 2?
medium
A. [1.6; 0.1]
B. [1.0; 0.05]
C. [1.8; 0.0]
D. [0.9; 0.1]
Solution
Step 1: Calculate next state using formula
Next state x[1] = A * x0 + B * u[0]. Calculate: A * x0 = [0.7*1 + 0.2*0; 0*1 + 0.9*0] = [0.7; 0] B * u[0] = [0.1*2; 0.05*2] = [0.2; 0.1]
Step 2: Add results to get x[1]
x[1] = [0.7; 0] + [0.2; 0.1] = [0.9; 0.1]
Final Answer:
[0.9; 0.1] -> Option D
Quick Check:
Use x[1] = A*x0 + B*u[0] [OK]
Hint: Multiply A*x0 and add B*u[0] for next state [OK]
Common Mistakes:
Forgetting to multiply input u by B
Mixing matrix multiplication order
Adding instead of multiplying matrices
4. You have this discrete state-space model in Simulink: A = [[1, 0], [0, 1]]; B = [[0], [0]]; C = [[1, 0]]; D = [[0]]; Why does the output never change regardless of input?
medium
A. Because matrix B is zero, input has no effect on state
B. Because matrix C is zero, output is always zero
C. Because matrix A is identity, states never update
D. Because matrix D is zero, output ignores input
Solution
Step 1: Analyze matrix B effect on input
Matrix B is zero, so input u does not affect state update: x[k+1] = A*x[k] + B*u[k] = A*x[k].
Step 2: Understand output behavior
Output y = C*x + D*u depends only on state x and input u. Since input doesn't change state, output depends only on initial state and does not change with input.
Final Answer:
Because matrix B is zero, input has no effect on state -> Option A
Quick Check:
Zero B means input can't change state [OK]
Hint: Zero B means input can't change state [OK]
Common Mistakes:
Confusing zero D with zero B effect
Assuming identity A means output changes
Ignoring input effect on state update
5. You want to design a discrete state-space model in Simulink to simulate a system with states updated every 0.1 seconds. The system matrices are: A = [[0.8, 0.1], [0, 0.9]]; B = [[0.05], [0.02]]; Which sample time should you specify to correctly model this system?
hard
A. 0.1
B. 1
C. 0
D. -0.1
Solution
Step 1: Understand sample time meaning
Sample time Ts defines how often the discrete system updates its state. Here, states update every 0.1 seconds.
Step 2: Choose correct sample time
Ts must be positive and equal to the update interval, so Ts = 0.1 seconds.
Final Answer:
0.1 -> Option A
Quick Check:
Sample time = update interval = 0.1 [OK]
Hint: Sample time equals system update interval (positive) [OK]
Common Mistakes:
Using zero or negative sample time
Confusing sample time with continuous time
Choosing wrong units for sample time
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.