As a Software Engineer, Why should I use MATLAB?
43 views (last 30 days)
Show older comments
NOUFAL THANGAL R on 27 Jun 2012
Commented: Walter Roberson on 14 May 2019
If I have knowledge on many other High level languages like Octave, SciLab, Maple,etc, Why should I learn and use MATLAB. What is the reason for which I should prefer MATLAB?
@Walter: Or a TMW product manager ran out of arguments for the new advertisement strategy.
Mani on 27 Jun 2012
The answer is same as why man started using a calculator when abacus was availabe. In this complicated world we can simplify many problems if we know part solutions to it . Matlab has a rich set of toolboxes which allow you to break down many complex problems . These toolboxes can be built in any language but if you get everything in one place why leave it . Plus you can concentrate more on the problem than the way to solve it.
More Answers (6)
Geoff on 27 Jun 2012
From one developer to another, the answer is: why not??
What do you have to lose from having another tool (or rather, arsenal) at your disposal?
If you have to justify even considering learning a new language/environment that is widely used across the planet, then perhaps you don't have the innate curiosity that makes a well-rounded software professional =P
Paul Metcalf on 27 Jun 2012
MATLAB is mainly used by scientists and engineers who are involved in numerical and technical computing. Most of these people use MATLAB because they are able to obtain the results they need quicker than by other means. This is probably the case because:
- MATLAB has a long history of refinement, and
- Has very good user documentation and a helpful support community, and
- Has a very large library of built-in pre-written functions for many common numerical computing tasks, and
- Is quite an informal language, allowing newcomers to get going and get results quickly.
As the term "software engineer" refers to such a broad field, it is almost impossible to answer your generalised question more specifically than this.
Matlab is very stable and well tested. I can still run my first programs developed for Matlab 4.2 (1994), when I consider the handfull of changes in the core-functions. The methods for debugging are powerful, but the tools for code or project management are in its infancy. The documentation of the functions is near to perfect: clear help texts, exhaustive docs for each command, but unfortunately no version history to find out, in which release a specific command has been added or modified. But the Matlab community and the support are very helpful to clear such and other questions or problems.
I assume, that the integration of Java for the GUI elements reduces the compatibility in the far future. When you try to use smart UI controls like UITrees, UITables or UITabs, there are even incompatibilities in the last few years and the main part of them is not documented at all.
My conclusion: MATLAB is a good choice, if you want to create programs, which are very reliable, stable and platform independent, and use GUIs looking older than the Atari ST (1986). If you develop projects in a group, additional external management methods are required urgently (yes, Walter, I think the term is correct here).
I personally like the clear and compact notation of array operations. This reduces the size of my code by about 75% and makes dull indexing bugs less likely. I can discuss with other Matlab users about A + B without needing to specify, which compiler, compiler flags and libraries I'm using. While I frequently get mails of upset hardcore programmers, when I dare to use C-99 style // comments in a C-source code, the Matlab community is cool and concentrate on real problems (as long as the code is not spoiled by eval, clear all or global).
Jason Ross on 27 Jun 2012
As a software engineer, you will be expected to use the tools, procedures and review processes of the organization which employs you and pays you. If it's a group that does significant amounts of their coding and development in MATLAB, then that's a powerful motivation, and you will be able to inter-operate with them on development projects, share code, re-use code and do all the things that happen when there are large projects going on.
Since this sounds like a "student" question, I'll let you know that whatever set of languages you are studying and using now, you'll likely be missing a few when you start looking for a job -- but that's not really a bad (or unusual) thing because the language landscape is very diverse and ever-changing as old languages are superseded by new ones that don't have the compatibility restrictions of the old ones. And then the old ones continue to soldier on because whatever they are doing, they are still doing it quite well. Look at FORTRAN or C, which still have quite a following (and active questions/answers on this site!)
Jordan McBain on 14 May 2019
MATLAB is not a programming language for software engineers. It is a tool for numerical analysis; its use cases in my mind are limited to that. From an embedded software perspective, I would only use it to develop controls and diagnostic algorithms and would do all the rest of the work in C.
My objection to it relate to its the variability of its interfaces. Software engineering depends on being able to develop rigid interfaces that encapsulate how software systems change within those interfaces - as a first step towards safety critical software systems. MATLAB's interfaces change depending on what's going on inside of it. You never know whether an output will be a cell array containing multiple elements or just a single instantiation of one of those elements. MATLAB's documentation poorly exposes this variability. Worst case, this results in guess and check coding.
Admittedly, this flexibility allows for easy code development but such flexibility is easily misused.
Market demand may push you to become familliar with it as others have suggested. But I don't believe it can be called a programming language for software engineers.
Walter Roberson on 14 May 2019
The only case I can think of at the moment for cell vs not is the return from uigetfile when multiselect is on which depends on the number of files the user selects.
The exact data type stored for a String property of uicontrol style edit can be confusing but it is consistent... Even if it would perhaps be easier if the consistency were slightly different.
Find more on Desktop in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!