📖 Scenario: You work as a data analyst in a company that uses Simulink to generate C code for embedded systems. Your task is to inspect the generated C code metrics to understand code complexity and size.
🎯 Goal: Build a Python program that stores generated C code metrics, filters metrics based on a threshold, and displays the filtered results.
📋 What You'll Learn
Create a dictionary with exact metric names and values
Add a threshold variable to filter metrics
Use a dictionary comprehension to filter metrics above the threshold
Print the filtered dictionary
💡 Why This Matters
🌍 Real World
Inspecting generated C code metrics helps engineers understand code complexity and maintainability in embedded systems.
💼 Career
Data analysts and software engineers often analyze code metrics to improve software quality and performance.
Progress0 / 4 steps
1
Create the metrics dictionary
Create a dictionary called code_metrics with these exact entries: 'Lines of Code': 1200, 'Cyclomatic Complexity': 15, 'Function Count': 45, 'Comment Percentage': 20
Simulink
Hint
Use curly braces {} to create a dictionary with key-value pairs separated by commas.
2
Add a threshold variable
Create a variable called threshold and set it to 30 to filter metrics with values greater than this number.
Simulink
Hint
Just assign the number 30 to the variable threshold.
3
Filter metrics above threshold
Use a dictionary comprehension to create a new dictionary called filtered_metrics that contains only the entries from code_metrics where the value is greater than threshold. Use for metric, value in code_metrics.items() in your comprehension.
Simulink
Hint
Use the syntax: {key: value for key, value in dictionary.items() if condition}
4
Display the filtered metrics
Print the filtered_metrics dictionary to display the metrics with values above the threshold.
Simulink
Hint
Use print(filtered_metrics) to show the filtered dictionary.
Practice
(1/5)
1. What is the main purpose of inspecting generated C code from a Simulink model?
easy
A. To run the Simulink model faster in simulation
B. To create new Simulink blocks automatically
C. To verify the correctness and understand the behavior of the generated code
D. To convert C code back into Simulink diagrams
Solution
Step 1: Understand the role of generated code inspection
Generated C code inspection is used to check if the code matches the Simulink model's logic and to understand how the model is translated into code.
Step 2: Eliminate unrelated options
Creating new blocks, speeding simulation, or converting code back to diagrams are not purposes of code inspection.
Final Answer:
To verify the correctness and understand the behavior of the generated code -> Option C
Quick Check:
Code inspection = verify and understand code [OK]
Hint: Code inspection checks correctness and logic match [OK]
Common Mistakes:
Thinking code inspection creates new blocks
Confusing code inspection with simulation speedup
Assuming code inspection converts code back to diagrams
2. Which Simulink tool is primarily used to generate C code from a model?
easy
A. Simulink Profiler
B. Simulink Data Inspector
C. Simulink Real-Time
D. Simulink Coder
Solution
Step 1: Identify the tool for code generation
Simulink Coder is the tool designed to generate C and C++ code from Simulink models.
Step 2: Confirm other tools' purposes
Profiler measures performance, Data Inspector visualizes signals, Real-Time runs models on hardware, none generate code.
Final Answer:
Simulink Coder -> Option D
Quick Check:
Code generation tool = Simulink Coder [OK]
Hint: Simulink Coder generates C code from models [OK]
Common Mistakes:
Confusing Profiler with code generator
Mixing Data Inspector with code generation
Assuming Real-Time generates code
3. Given the following snippet from generated C code, what does the variable rtU.inputSignal represent?
/* Model step function */
void model_step(void) {
real_T output = rtU.inputSignal * 2.0;
rtY.outputSignal = output;
}
medium
A. An output signal from the model
B. An input signal to the model
C. A local temporary variable
D. A constant value defined in the code
Solution
Step 1: Analyze variable naming conventions
In generated code, rtU prefix usually denotes inputs to the model, so rtU.inputSignal is an input.
Step 2: Check usage in code
The code multiplies rtU.inputSignal by 2 and assigns to output, confirming it is an input value.
Final Answer:
An input signal to the model -> Option B
Quick Check:
rtU = inputs, rtY = outputs [OK]
Hint: rtU prefix means input signals in generated code [OK]
Common Mistakes:
Thinking rtU is output or local variable
Assuming inputSignal is a constant
Confusing variable scope
4. You find this line in generated C code:
int32_T counter = 0
counter += 1;
What is the error here?
medium
A. Missing semicolon after the first statement
B. Incorrect variable type for counter
C. counter cannot be incremented like this
D. Variable counter should be declared as float
Solution
Step 1: Check syntax of variable declaration
The first line declares counter but misses a semicolon at the end, which is required in C.
Step 2: Validate increment statement
The increment counter += 1; is correct syntax and valid for int32_T type.
Final Answer:
Missing semicolon after the first statement -> Option A
Quick Check:
Every C statement ends with ; [OK]
Hint: Check for missing semicolons in C code lines [OK]
Common Mistakes:
Ignoring missing semicolon errors
Thinking increment syntax is wrong
Confusing variable types unnecessarily
5. You want to optimize generated C code by removing unused signals. Which step should you take in Simulink before generating code?
hard
A. Use the Code Mappings editor to mark unused signals as 'Exclude from code'
B. Enable signal logging for all signals
C. Increase the sample time of all blocks
D. Disable the Simulink Coder entirely
Solution
Step 1: Understand code optimization options
Simulink allows marking signals as unused in the Code Mappings editor to exclude them from generated code.
Step 2: Evaluate other options
Enabling logging increases code size, increasing sample time changes model behavior, disabling coder stops code generation.
Final Answer:
Use the Code Mappings editor to mark unused signals as 'Exclude from code' -> Option A
Quick Check:
Exclude unused signals via Code Mappings [OK]
Hint: Mark unused signals to exclude in Code Mappings editor [OK]
Common Mistakes:
Enabling logging increases code size
Changing sample time affects model timing
Disabling coder stops code generation
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.