Bird
Raised Fist0
Simulinkdata~10 mins

Variant subsystems in Simulink - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Variant subsystems
Start Model
↓
Define Variant Control Variable
↓
Evaluate Variant Conditions
↓
Activate Matching Variant Subsystem
↓
Simulate Active Variant
↓
Output Results
↓
End Simulation
The model starts by defining a control variable that decides which variant subsystem activates. The system evaluates conditions, activates the matching variant, simulates it, and outputs results.
Execution Sample
Simulink
variant = 2;
if variant == 1
  output = subsystem1(input);
elseif variant == 2
  output = subsystem2(input);
else
  output = defaultSubsystem(input);
end
This code selects and runs one subsystem based on the variant variable.
Execution Table
StepvariantCondition CheckedBranch TakenOutput Subsystem
12variant == 1FalseNone
22variant == 2Truesubsystem2
32elseSkippedsubsystem2 output computed
42Simulation endsN/AFinal output from subsystem2
💡 variant == 2 condition is True, subsystem2 runs, simulation ends after output
Variable Tracker
VariableStartAfter Step 1After Step 2Final
variantundefined222
outputundefinedundefinedsubsystem2 outputsubsystem2 output
Key Moments - 2 Insights
Why does only one subsystem run even though multiple conditions exist?
Because the code uses if-elseif-else structure, once a true condition is found (variant == 2 at step 2), the rest are skipped as shown in execution_table row 3.
What happens if variant value does not match any condition?
The else branch runs the default subsystem, ensuring the model always has an active variant, as implied in the code and execution_table.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the output subsystem at step 2?
Asubsystem1
BdefaultSubsystem
Csubsystem2
DNo subsystem
💡 Hint
Check the 'Output Subsystem' column at step 2 in the execution_table.
At which step does the simulation decide which subsystem to run?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Look at the 'Condition Checked' and 'Branch Taken' columns to see when variant == 2 is true.
If variant was set to 3, which subsystem would run according to the code?
AdefaultSubsystem
Bsubsystem2
Csubsystem1
DNo subsystem
💡 Hint
Refer to the else branch in the code sample and the explanation in key_moments.
Concept Snapshot
Variant Subsystems in Simulink:
- Use a control variable to select active subsystem.
- Conditions evaluated in order (if-elseif-else).
- Only one variant subsystem runs per simulation.
- Ensures flexible model behavior without changing structure.
- Default subsystem handles unmatched cases.
Full Transcript
Variant subsystems let you choose which part of a Simulink model runs based on a control variable. The model checks conditions in order and activates the matching subsystem. Only one subsystem runs at a time, making the model flexible. If no condition matches, a default subsystem runs. This process helps simulate different scenarios without changing the model layout.

Practice

(1/5)
1. What is the main purpose of a Variant Subsystem in Simulink?
easy
A. To generate code from a Simulink model
B. To switch between different subsystem implementations within one model
C. To create a new Simulink model automatically
D. To visualize simulation results in real-time

Solution

  1. Step 1: Understand Variant Subsystem concept

    A Variant Subsystem allows multiple subsystem options inside one model but only runs one at a time.
  2. Step 2: Identify the main purpose

    This helps switch between different designs easily without changing the whole model.
  3. Final Answer:

    To switch between different subsystem implementations within one model -> Option B
  4. Quick Check:

    Variant Subsystem = Switch subsystems [OK]
Hint: Variant subsystems let you pick one design option inside one model [OK]
Common Mistakes:
  • Thinking it creates new models
  • Confusing with code generation
  • Assuming it visualizes results
2. Which of the following is the correct way to define a variant control variable in Simulink for a Variant Subsystem?
easy
A. variantControl -> 1; % Use arrow operator
B. variantControl == 1; % Use double equals for assignment
C. variantControl := 1; % Use colon equals operator
D. variantControl = 1; % Define control variable in MATLAB workspace

Solution

  1. Step 1: Recall MATLAB syntax for variable assignment

    In MATLAB, variables are assigned using a single equals sign, e.g., var = value;.
  2. Step 2: Identify correct syntax for variant control variable

    variantControl = 1; % Define control variable in MATLAB workspace uses = correctly. Options A, B, and C use invalid assignment operators.
  3. Final Answer:

    variantControl = 1; % Define control variable in MATLAB workspace -> Option D
  4. Quick Check:

    Assignment uses =, not == or := [OK]
Hint: Use single = for assignment in MATLAB workspace [OK]
Common Mistakes:
  • Using == instead of = for assignment
  • Using := or -> which are invalid in MATLAB
  • Confusing control variable with variant condition
3. Given the following variant control variable and conditions:
variantControl = 2;
Which subsystem will run if the variant conditions are:
Subsystem A: variantControl == 1
Subsystem B: variantControl == 2
Subsystem C: variantControl == 3
medium
A. Subsystem B
B. Subsystem A
C. Subsystem C
D. No subsystem runs

Solution

  1. Step 1: Check the value of variantControl

    The variable variantControl is set to 2.
  2. Step 2: Match variantControl with subsystem conditions

    Subsystem B runs when variantControl == 2, which matches the current value.
  3. Final Answer:

    Subsystem B -> Option A
  4. Quick Check:

    variantControl 2 matches Subsystem B condition [OK]
Hint: Match variantControl value to condition to find active subsystem [OK]
Common Mistakes:
  • Choosing subsystem A or C without matching condition
  • Assuming multiple subsystems run simultaneously
  • Ignoring exact equality in conditions
4. You have a Variant Subsystem with two variants controlled by variantControl. The control variable is set as variantControl = '1'; (a string). The variant conditions are variantControl == 1 and variantControl == 2. What error will occur?
medium
A. Error due to type mismatch between string and number
B. No error, Subsystem 2 runs
C. No error, Subsystem 1 runs
D. Error because variantControl is undefined

Solution

  1. Step 1: Identify data types of variantControl and conditions

    variantControl is a string ('1'), but conditions compare to numbers (1 and 2).
  2. Step 2: Understand type mismatch impact

    Comparing string to number with == causes a type mismatch error in Simulink variant evaluation.
  3. Final Answer:

    Error due to type mismatch between string and number -> Option A
  4. Quick Check:

    String vs number comparison causes error [OK]
Hint: Ensure variantControl type matches condition type to avoid errors [OK]
Common Mistakes:
  • Assuming string '1' equals number 1
  • Ignoring data type in variant conditions
  • Thinking variantControl can be undefined
5. You want to compare two design options in a Simulink model using Variant Subsystems. One subsystem uses a PID controller, and the other uses a state-space controller. How should you set up the variant control variable and conditions to switch between these controllers during simulation?
hard
A. Set variantControl = true; for PID and variantControl = false; for state-space, then use conditions variantControl == true and variantControl == false
B. Use variantControl = 'PID'; and variantControl = 'StateSpace'; with conditions variantControl == 'PID' and variantControl == 'StateSpace'
C. Set variantControl = 1; for PID and variantControl = 2; for state-space, then use conditions variantControl == 1 and variantControl == 2 respectively
D. Use no variant control variable and manually enable one subsystem at a time

Solution

  1. Step 1: Choose numeric variant control variable for clarity

    Using numeric values like 1 and 2 is simple and avoids type mismatch.
  2. Step 2: Define variant conditions matching control variable values

    Conditions variantControl == 1 and variantControl == 2 clearly select PID or state-space subsystems.
  3. Step 3: Avoid string or boolean variants for better compatibility

    Strings or booleans can cause errors or confusion in variant evaluation.
  4. Final Answer:

    Set variantControl = 1 for PID and variantControl = 2 for state-space, with matching conditions -> Option C
  5. Quick Check:

    Numeric control variable with matching conditions is best practice [OK]
Hint: Use numeric variantControl and matching == conditions for easy switching [OK]
Common Mistakes:
  • Using strings causing type mismatch
  • Using booleans which limit options
  • Not using variantControl and enabling subsystems manually
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard