In today’s post, I will address some commonly asked question:
How long does it take to learn MATLAB and Simulink?
The answer to this question is dependent on a number of factors. First, do you already know a programing language? Are you familiar with control algorithms? Do you have supporting people who know the toolset already?
Assuming a basic level of programming & software knowledge and a controls background with basic support most people will start using Simulink to basic develop control models within 2 ~ 3 weeks. Over the course of 3 ~ 4 months, they will learn how to develop more complex systems. For most people that level of understanding is sufficient for all of their development needs.
Deeper master of the tools, as is required for people to develop a group’s modeling patterns and best practices can be learned over the course of 3 to 5 years.
What is test coverage and why is it important?
Test coverage is the measure of how well the software is tested. This can apply to MCDC coverage (the if/else checking) range coverage (e.g. did you hit every point in your tables) and temporal coverage (do you account for temporal, e.g. integral, effects). Test coverage then tells you if you are sufficiently exercising the code base. One important thing to keep in mind, it is possible to have 100% coverage and still have incorrect behavior.
How do I transition from a C based to Model-Based Design environment?
The answer, in part, is dependent on the state of your existing code base. If it is well organized (e.g.encapsulated with independent modules) then the process is straightforward, individual modules can be replaced or extended on an as-needed basis.
More often then not when the transition takes place it is happening because there the existing code base is “stale” or difficult to maintain. In these cases a strategic decision needs to be made, what part of the code base can be “walled off” or trusted while you work on new critical systems? Once that decision is made the work begins in earnest. Ideally, the models are derived from the base requirements, not engineered from the existing flawed code base. Often this is when the lack of the original requirements are uncovered.