The State-space block helps you model systems using math equations that describe how things change over time.
When you want to simulate how a control system behaves over time.
When you have a system described by matrices showing its dynamics.
When you want to analyze or design controllers for mechanical or electrical systems.
When you want to see how inputs affect outputs in a system step-by-step.
Syntax
Simulink
State-space block parameters:
A: State matrix
B: Input matrix
C: Output matrix
D: Feedthrough matrix
Use these matrices to define system dynamics:
dx/dt = A*x + B*u
y = C*x + D*u
The matrices A, B, C, and D must have compatible sizes.
The block uses these matrices to calculate system output and state changes.
Examples
This example models a simple second-order system with one input and one output.
Simulink
A = [01; -2 -3]
B = [0; 1]
C = [10]
D = [0]
This example models a third-order system with one input and one output.
Simulink
A = [010; 001; -1 -2 -3]
B = [0; 0; 1]
C = [100]
D = [0]
Sample Program
This code creates a simple state-space system, simulates its response to a step input over 5 seconds, and plots the output.
Simulink
%% Define state-space matrices
A = [01; -2 -3];
B = [0; 1];
C = [10];
D = [0];
% Create state-space system
sys = ss(A,B,C,D);
% Define time vector
t = 0:0.1:5;
% Define input signal (step input)
u = ones(size(t));
% Simulate system response
y = lsim(sys,u,t);
% Plot output
graph = plot(t,y);
title('System Output Response');
xlabel('Time (seconds)');
ylabel('Output');
OutputSuccess
Important Notes
The State-space block is useful for systems described by differential equations.
Make sure your matrices are correct to avoid simulation errors.
You can simulate multiple inputs and outputs by adjusting matrix sizes.
Summary
The State-space block models dynamic systems using matrices.
It calculates how system states and outputs change over time.
It is useful for simulating and analyzing control systems.
Practice
(1/5)
1. What does the State-space block in Simulink primarily represent?
easy
A. a mathematical model using matrices to describe system dynamics
B. A graphical user interface for designing circuits
C. A tool to generate random numbers
D. A block to display system output only
Solution
Step 1: Understand the purpose of the State-space block
The State-space block models systems using matrices that describe how states change over time.
Step 2: Compare options with the block's function
Only a mathematical model using matrices to describe system dynamics correctly describes the use of matrices to represent system dynamics.
Final Answer:
a mathematical model using matrices to describe system dynamics -> Option A
Quick Check:
State-space = matrix model [OK]
Hint: State-space means matrix model of system changes [OK]
Common Mistakes:
Confusing State-space with graphical tools
Thinking it only displays output
Assuming it generates random data
2. Which of the following is the correct way to specify the State-space block matrices in Simulink?
easy
A. A = [[0,1],[0,0]]; B = [[0],[1]]; C = [[1,0]]; D = [[0]]
B. A = [0 1; 0 0]; B = [0; 1]; C = [1 0]; D = [0]
C. A = {0,1;0,0}; B = {0;1}; C = {1,0}; D = {0}
D. A = (0,1),(0,0); B = (0),(1); C = (1,0); D = (0)
Solution
Step 1: Recall MATLAB/Simulink matrix syntax
Matrices in MATLAB/Simulink use square brackets with semicolons separating rows and spaces or commas separating columns.
Step 2: Identify the correct syntax
A = [0 1; 0 0]; B = [0; 1]; C = [1 0]; D = [0] uses correct MATLAB matrix syntax: [0 1; 0 0] etc., while others use invalid or incorrect formats.
Final Answer:
A = [0 1; 0 0]; B = [0; 1]; C = [1 0]; D = [0] -> Option B
Quick Check:
Correct matrix syntax = A = [0 1; 0 0]; B = [0; 1]; C = [1 0]; D = [0] [OK]
Hint: Use [rows; rows] with spaces or commas for columns [OK]
Common Mistakes:
Using curly braces {} instead of brackets []
Using parentheses () for matrices
Separating rows with commas instead of semicolons
3. Given the State-space matrices: A = [0 1; -2 -3], B = [0; 1], C = [1 0], D = [0] and input u(t) = 1, what is the initial output y(0) if the initial state x(0) = [0; 0]?
medium
A. 1
B. -3
C. 0
D. Undefined
Solution
Step 1: Calculate output y(0) using y = C*x(0) + D*u(0)
Multiplying C by zero vector gives zero, D times input is zero, so output is zero.
Final Answer:
0 -> Option C
Quick Check:
y(0) = Cx0 + Du0 = 0 [OK]
Hint: Output at zero state = D times input only [OK]
Common Mistakes:
Ignoring initial state and using input only
Confusing matrix multiplication order
Assuming output equals input directly
4. You entered the following matrices in a State-space block: A = [0 1; -1 -1], B = [0; 1], C = [1; 0], D = [0]. When simulating, you get an error about matrix dimensions. What is the likely cause?
medium
A. Matrix A must be square but is not
B. Matrix B has wrong number of rows compared to A
C. Matrix D must be a scalar zero, not a matrix
D. Matrix C has wrong number of columns compared to A
Solution
Step 1: Check matrix dimensions for State-space consistency
Matrix A is 2x2, so B must be 2x1, C must be 1x2, D must be 1x1. Here B=[0;1] (2x1) ok, but C=[1; 0] is 2x1.
Step 2: Identify mismatch
Matrix C has wrong number of columns (1 vs 2 for A).
Final Answer:
Matrix C has wrong number of columns compared to A -> Option D
Quick Check:
C columns must match A columns [OK]
Hint: C columns = A columns; B rows = A rows [OK]
Common Mistakes:
Mixing rows and columns in matrices
Entering C as a column vector instead of row
Assuming D can be any size
5. You want to model a mechanical system with two states using a State-space block. The system has matrices: A = [0 1; -1 -1], B = [0; 1], C = [1 0], D = [0]. If the input force is a step input of magnitude 3, what will be the steady-state output y(t) as t approaches infinity?
hard
A. 3
B. 0
C. 1
D. Cannot determine without simulation
Solution
Step 1: Find steady-state state x_ss using (A)x_ss + (B)u_ss = 0
At steady state, dx/dt=0, so 0 = A*x_ss + B*u_ss. With u_ss=3, solve for x_ss: x_ss = -inv(A)*B*3.
Step 2: Calculate output y_ss = C*x_ss + D*u_ss
Calculate x_ss, then y_ss. For given matrices, y_ss = C*(-inv(A)*B*3) + 0 = 3 (after calculation).
Final Answer:
3 -> Option A
Quick Check:
Steady output = input magnitude for stable system [OK]
Hint: Steady output = input if system is stable [OK]
Common Mistakes:
Ignoring steady-state calculation
Assuming output equals zero without input
Not inverting matrix A correctly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.