Oliver Woodford

[DEPRECATED] What frustrates you about MATLAB?

Oliver Woodford on 16 Feb 2011
Latest activity Reply by DB on 13 Jun 2023

I love MATLAB. It is so quick and easy to write software to do what you want. It has excellent debugging and profiling tools. It is cross platform, making code easy to share (assuming the other people have forked out for the not-so-cheap license). It has interfaces to other software.
However, there are some things about it that irk me. I'd like to hear from other people what things annoy them about MATLAB.
Because this thread has become so large it is slow to load and navigate. Please post new answers in the second thread.
Rik on 10 Dec 2022
I was given to understand when the move feature was introduced that moving to a different thread would be possible in the future. I don't know the timeline for that feature or whether they're still working on it. It might come together with a different change I'm expecting to be done somewhere in the next 6 months.
Moving between threads will really help keeping threads like this clean, as I could move 110 answers to two different threads to get this one back to 50. It will take me an afternoon, but the end result would be navigateable threads.
DGM on 10 Dec 2022
Oh. I was afraid that's what happened.
:( seconded
Stephen23 on 10 Dec 2022
"Can't we just move new answers to the most-recent thread?"
That is what I just tried with the above comments, but it seems that moving only works within a thread :(
DGM on 10 Dec 2022
Can't we just move new answers to the most-recent thread? I'm reluctant to try it myself, since these extra-heavy pages almost never load correctly on my connection, and I've already had to deal with items which won't move or don't move completely after I touch them.
EDIT: I guess this "structs" thread is now in a pile of comments instead.
Rik on 10 Dec 2022
@Bruno Luong Unfortunately the only current way that is possible is by closing the thread, which has its own downsides. That is one of the reasons I have asked for a soft-lock option to be implemented.
I don't think reading the opening post is an unreasonable thing to expect, especially if you expect anyone to bother reading your comment.
Bruno Luong
Bruno Luong on 10 Dec 2022
"why did you ignore the comment at the top and post your answer in this thread?"
If you don't want people to post here then this thread should be locked. People just do search and they end up here, and no one bother to read the instruction before posting, they end up here alreadu frustrated (by MATLAB).
Rik on 10 Dec 2022
The 'problem' in this case is that x.a produces a comma separated list. It is equivalent to x(1).a,x(2).a,...,x(end).a. When you understand that, this behavior makes perfect sense.
And regarding jsondecode; the behavior is deterministic and documented. It depends on whether Matlab can tell the input structs would be the same. If they are, the result will be a struct array.
You can also follow it up with a function that converts a struct array to a cell array of structs if you prefer.
More importantly, why exactly is this being posted in this thread instead of the second thread? On mobile this page will not load properly anymore, and even on some computers it is getting harder. @Etienne Grossmann why did you ignore the comment at the top and post your answer in this thread?
Samuel Gray
Samuel Gray on 10 Dec 2022
I suppose this depends on what you mean by "frustration". I usually think of it as reward -effort. Now I can see where possibly someone might want to make an array of structures. A directory-search returns a structure, so if you were to dir of a tree, that would return an array of structures. That doesn't require any funky javish code. If you're going to down that rabbit-hole it's a matter of documentation as much as anything else, right? And I totally agree that when documentation is incomplete or just not there or obtuse, AND i REALLY NEED TO DO SOMETHING THAT RELIES HEAVILY ON THE DOCUMENTATION, that yes it can be frustrating. If I can't find an easier, better way to do it. I had a very bad experience with this using the Signal Communications toolbox to try to do tcp and udp data transfers in Win10. Turns out this is a long-standing problem. Because MS came out with an entirely new & different proprietary network stack which does not work with the Windows version of Matlab. It works fine with the Linux version. But the real solution is to just use the pcap stack. Or, you know, get a good book on winsock and have at it. The point is that you have to balance need and "available options" against difficulty, time and net frustration. It's not about getting X(:) done with toolset Y(:) it's about figuring out how to create and organize a custom toolset-documentation combination to solve an appropriate set of problems in an appropriate amount of time and effort. "Appropriate". Use it like play-dough. It's great. Solves every problem.
Walter Roberson
Walter Roberson on 10 Dec 2022
You could, of course, reduce it all to cells, like
x4 = {{3, 100}, {4, 200}};
whos x4
Name Size Bytes Class Attributes x4 1x2 656 cell
Besides the fact that this takes more memory than the struct array, you have the problem that you have to pass around a "key" everwhere in order to use this data. structs associated information with a name -- to use a field of a struct you do not need to know the relative position of the field within the struct, you only have to know the name of the field. Cell arrays on the other hand, you have to know which index is associated with each data item.
Walter Roberson
Walter Roberson on 10 Dec 2022
x1(1).a = 3; x1(1).b = 100;
x1(2).a = 4; x1(2).b = 200;
x2 = struct('a', {3, 4}, 'b', {100, 200});
x3 = {struct('a', 3, 'b', 100), struct('a', 4, 'b', 200)};
isequal(x1, x2)
ans = logical
whos x1 x2 x3
Name Size Bytes Class Attributes x1 1x2 576 struct x2 1x2 576 struct x3 1x2 912 cell
Notice that the cell version takes more memory. When you have a cell of scalar structs, then the name to offset information has to be repeated for each one of the entries, whereas for a struct array, the name to offset information is the same for each index.
Etienne Grossmann
Etienne Grossmann on 10 Dec 2022
Thanks Paul, that was instructive!
I still have doubts about the utility of struct arrays. I think they're at best redundant w/ structs and cells, and an extra complication to the language.
I'd rather not need a bachelor of science in Matlab in order to program in Matlab.
As a practical disadvantage, if I already have dozens of functions that work w/ cells of structs, and jsondecode() returns sometimes struct array, sometimes cell of structs, it means I can't use jsondecode(), and must use something else to load json files.
Paul on 10 Dec 2022
Create an example struct array
x1(1).a = 3; x1(1).b = 100;
x1(2).a = 4; x1(2).b = 200;
ans = 3
ans = 4
How do I access the second element?
Like this, if I understand the question correctly
ans = 4
Etienne Grossmann
Etienne Grossmann on 10 Dec 2022
struct arrays are pretty unusable. Example:
Only workaround I know of:
foo = {x1.a}; % Looks like a cell w/ one element, but it is not so
Worse, the function jsondecode() sometimes returns a cell of structs (good), sometimes a struct array.
yang on 19 Oct 2022
I think the main problem I encountered was that I did not learn the basic content of this programming in the class first, but I directly got used to some difficult homework. As a result, I can only operate the software simply, but cannot use the software flexibly.
Rik on 22 Oct 2022
Why is this discussion happening in this thread? Even on a desktop this page is horrible to navigate. Chrome nearly crashed when I moved your answer to a comment.
Samuel Gray
Samuel Gray on 21 Oct 2022
Good project-management is based on the fundamental principle that given enough time, intellect, morals, ethics and effort, a good answer will come forward in a good timeframe and the problem will be resolved in a good way. There's no need to exend the question to the ridiculous, we don't need an Einstein or Plato here to resolve this question.
Matlhworks just can't waste time and resources answering every question or meeting every feature-request that users have. If they really need to know they will figure it out, if not they will work with what they already know.
Image Analyst
Image Analyst on 21 Oct 2022
@Samuel Gray I love steep learning curves. If you plot learning or knowledge gained vs. time, the steeper (more vertical) the better. I mean who woudn't want to learn a lot in a short time? A flat learning curve means little learned over a long time. Who would want that? So I think the learning curve is fortunately pretty steep for the basics but after that, it flattens out when/if you start to learn the fancier, more sophisticated features. I learned more in the first 3 months of programming in MATLAB than I've learned in the 16 years since then.
The expert quote I like best is from Nicholas Butler, president of Columbia University:
“An expert is one who knows more and more about less and less until he knows absolutely everything about nothing.”
@Walter Roberson and @Yair Altman are probably the two most expert about MATLAB, possibly even knowing more about it than the Mathworks staff, or even @Cleve Moler (Founder of MATLAB).
Walter Roberson
Walter Roberson on 21 Oct 2022
I am not convinced that anyone can master all of the commands and toolsets entirely.
Such a person would have to be able to (for example) design the mechanical (Simscape Mechanical) and electrical (Simscape Electrical) and fluid (transmission, gas) (Simscape Fluid) systems for a self-driving car with integrated sensors (Self Driving toolbox, Lidar Toolbox), and its data systems (Data Acquisition toolbox, CAN BUS blockset), build a 5G transmission protocol (5G toolbox, Communications System) including designing the antenna (Antenna Toolbox), and the car would have to be scanning the people it passed by cameras (Image Acquisition, Computer Vision, Vision HDL) and listen to them speak (Audio System) and run through prediction models (Deep Learning) to recognize whether they had any tumours or other illnesses, and if so then model the pathology (SimBiology), and use it to make predictions about which stocks to buy (Finance Toolbox)... and other things as well.
That is, in order to "master" all those toolboxes, you need to be fairly well acquainted with all of the areas of human and scientific knowledge covered by the toolboxes.
“It’s been said [Thomas] Jefferson was the last man to engage with success all the knowledge of his time,” as a statesman and student of letters, language, architecture, religion, philosophy, mathematics, astronomy, and natural sciences, Moses said. -- but the article also makes it clear that he "lacked the military and financial acumen that contributed to Washington’s success, the practical knowledge of Frederick the Great, or the scientific expertise of Benjamin Franklin.". So even then, 200 years ago, it was not practical for one single person to know about everything there was to know.
Samuel Gray
Samuel Gray on 19 Oct 2022
...yeah but it's not often in life that we begin to use a software program and are immediately granted Wizard Developer status.
This is more a consequence of the trend to advertize development packages as "easy to use and easy to master"/"Matlab for Dummies" and so on. You could say that the learning curve of Matlab is very steep...if you intend to master all of the commands and toolsets entirely? Yes it is very steep. If on the other hand you only use it to do what you need to do in order to complete your homework? Then it's not quite so steep, especially as your future homework will be limited by how well you have done your past homework. It may not be the best tool to use to complete your homework, which is why they are interested in your opinion about the software, but as far as learning how to operate the software in a more complex way, that's entirely between you and the Matlab documentation or whatever other training you take in order to learn those more complex uses. You have to put the time and effort in to learn. There's no way to just inject it into your brain.
Though perhaps Mathworks could consider developing an AI to help it develop better learning-tools.
Now that's an eye-opening challenge for the software industry.
Undoubtedly solved with some kind of computer-game, but that's life in the 21st century.
Anyway just be glad that your homework isn't to write your own version of Matlab from scratch in some "real" programming-language like Basic or C.
Alexander Moody
Alexander Moody on 21 Jul 2022
You can't unselect an ROI. You can select it just fine, but for some reason, the only way to unselect an ROI is to change roiHandle.Selected to false. I want to be able to click on a selected ROI and have it unselect.
Jerry Malone
Jerry Malone on 19 Jul 2022
Layer upon layer upon layer of unecessary abstraction.
I don't need abstraction. I need results.
Nowadays it's just easier and quicker for me for to write my own Matlab code than it is to use built-in object-oriented starndard library functions.
Example: I need an OQPSK constellation for a comms simulation. Writing the code to make it and plot it takes maybe 30 minutes max, and I understand and control every step along the way. The plots look like I want them to. I could try to figure out how to use comm.OQPSKModulation by doing a lot of Google searching, then trying to make sense of the once-excellent Matlab built-in help and look at the useless workspace where every object is 1x1 that tells me nothing, and then fumble around all afternoon trying to figure out what's a method, what's a property, and what's a parameter, and then get an ugly, mediocre plot with an unusable back background. Then I spend 30 minutes changing the background to white, getting the axes right, etc, but I lose all these settings so I have to it all over again a dozen times. What a waste of an afternoon!
Matlab used to be so much fun. Now it's turning into a nightmare. I'm starting to dread using it.
When I need abstraction, I use Java or C++. That's what Java and C++ objects are for. Matlab used to be a labratory, where I can test ideas quickly and easily, without abstraction or overhead.
Bruno Luong
Bruno Luong on 21 Jul 2022
The frustration is endless.
Rik on 21 Jul 2022
The main problem I have with your answer is that you posted it on this thread. This page is utterly useless on mobile, because the thread is too large. There is a big banner in the question explaining what to do. I would suggest deleting the answer here and continuing the conversation there.
Jerry Malone
Jerry Malone on 20 Jul 2022
The question was "What frustrates you about MATLAB". I gave an honest answer to that question, in hope that the MathWorks will consider my answer in developing new products. Ask an honest question, get an honest answer. I'm not complaining for the sake of complaining.
And this has nothing to do with "capitalism, etc. blah...".
I've been using MATLAB for over 20 years now. I used to love using it. These days I spend more time figuring out the convolutions and abstractions of OOP features than I do actually using MATLAB to get results. That should be a red flag warning to anyone at MathWorks: their product is no longer simple, nor is it intuitive.
Another case-in-point: just getting to this webpage took me several steps. Clicking on the email link provided took me elsewhere, and I had to search and click around to get here. That's not a good sign. Not simple. No longer intuitive.
Samuel Gray
Samuel Gray on 20 Jul 2022
Jerry, this reply isn't for you so much as for others reading it who are considering it seriously.
A) it's never good to complain about a "problem" that you can resolve with 30 minutes of searching and reading about online, that gets you through "what's a method, what's a property, and what's a parameter, " be specific...and with that information you can make use of methods, properties and (gasp!) parameters in Matlab and most if not all object-oriented programming-languages.
B) It's definitely not a good idea to spend an hour typing up a letter to complain about something that you can resolve, and learn, and grow as a programmer, in maybe 15 minutes online.
C) I understand why you think it was a good idea to do it anyway, because that often keeps people from complaining about things that shouldn't have happened in the first place.
...the problem here is exactly what is it that shouldn't have happened...
I do agree that the quality of the available documentation (and search-engine) does affect the time and effort spent in resolving this problem. That is, I would guess, precisely why Mathworks is trying to implement industry-standard solutions. So they don't have to write "Matlab" documentation that is largely separate from the whole body of OOP documentation available on the Internet.
D) capitalism, etc, blah blah blah.
ILoveMATLAB on 4 May 2022
Last fustration:MATLAB COMPLIER SDK implies MATLAB Advertisment.
If [blank] spends XX,XXX dollars extra to purchase the MATLAB Compiler SDK+ Required ADD ONS to export thier appliaction,[blank] should be able to replace the MATLAB icon with an icon of their choosing. Icons referes to the icons for figures and dialog boxes.
[blank] did not pay XX,XXX to advertise MATHWORKS
ILoveMATLAB on 5 May 2022
Rik, Thank you for the reminder I will repost.
Bruno Luong
Bruno Luong on 5 May 2022
What furstrate me more is MATLAB COMPLIER SDK is toolbox that XXX have to pay even if he/she has a license for a MATLAB compiler and MATLAB Coder. It's become so obvious (and ridiculuous) that TMW wants to make as much money as they can.
Samuel Gray
Samuel Gray on 5 May 2022
I love it when people use the word "should" as if things should actually be the way they think they should be. Despite the fact that they're not.
Suppose that Mathworks has an intern read through this chat and maintain a chart of changes to make based on such messages. Which one should they start with and how should they prioritize the work?
Rik on 5 May 2022
@ILoveMATLAB: I was not able to read either of your posts on mobile. Please post them on the second thread and delete them here.
ILoveMATLAB on 4 May 2022
LoL on the first link. I did't realize someone replied a couple of years later.
I tried the instructions in second link in 2019. The instructions change the installer icon for the runtime/DLL installer, but they do not change the icon in the dialog boxes and figures. When the end user runs the actuall DLL all, they see are MATLAB icons. It looks tacky. One incon is used for the installer, another icon is used for everything else.
Note I only have access to the compiler sdk/.NET builder up to 2019b. Did they change something since then?
Walter Roberson
Walter Roberson on 4 May 2022
ILoveMATLAB on 4 May 2022
MATLAB makes large projects difficult to manage.
  1. OPP - No multi class files. This combined with the other issues prevent me from using ver the "Single-responsiblity Principle".
  2. Namespaces- No within file name spaces. No within file imports
  3. File Search: As of 2021a the in file search and cross file search is still a joke. there is no continuous search. This adds a lot of time to development. I basically use the current folder panel to jump between files. Also the search bar should be a panel like in most IDEs.
  4. Tab Completion: Originally the lack of good tab completion for python and MATLAB was attributed to the dynamic nature of the languages. Now python has Tabnine and Kite. Matlab has nothing.
  5. Function Input Hints: Spotty.
  6. Function Documentation when you hover with mouse over function:
  7. No Syntax code highlighting: At least highlight the MATLAB functions.
  8. No intellisence equivalent.
  9. I could go on.
I wonder if TMW could do thier C++ and Java coding without the above features.
ILoveMATLAB on 4 Jun 2022
If the opportunity is still available please message me.
ILoveMATLAB on 4 Jun 2022
Quick Update. My company finally gave me access to 2021b+. The editor is definitly impoved. This is a step in the right direction. Although, it did take me 30min to improve the font.
Rik on 10 May 2022
@dpb This answer was reposted to the new thread, where the spelling was corrected to OOP (object oriented programming).
Bruno Luong
Bruno Luong on 10 May 2022
@dpb you need to remove the dot at the end of the link
OPP, many suspects it's a typo of OOP, object oriented programming.
Persnonally I think MATLAB IDE is just fine.
dpb on 10 May 2022
<> --> 404 Not Found
@ILoveMATLAB -- still don't know what OPP stands for??
Michelle Hirsch
Michelle Hirsch on 10 May 2022
Hey, it's Michelle here. I'm the head of the MATLAB Product Management team.
Thanks for taking the time to share so many of your insights on areas of MATLAB you'd like to see improved. I'd love chat with you to learn more if you are willing to carve out a little more time. I'll bring in some leads from the desktop and editor development team to make sure your feedback gets directly to the source.
Let me know if you are interested and I'll message you to arrange.
ILoveMATLAB on 4 May 2022
I understand most of your points. I guess MATLAB needs a new file extension with syntax that allow better OPP, tab completion, and syntax highlighting. I am tired of these band aid improvements.
However, I don’t care if editor accidently highlights a variable named bwdist, sum, or size because it thinks it is an official MATLAB function. It is a good idea to know that you are overshadowing an official MATLAB function in your code.
There is an unofficial VS Code plugin that highlights MATLAB functions. I don’t understand the reason TMW cannot add this feature. .
Walter Roberson
Walter Roberson on 4 May 2022
Note: the editor changed as of R2021b. Some of the choices for the new editor were good; others are not so popular.
Function hints and tab completion were both improved.
Syntax is highlighted, already was before your release. All keywords are highlighted.
But as far as MATLAB is concerned, there is no such thing as "MATLAB functions" as different from user functions: the resolution of function name to implementation is done at run-time. There are some function names that can be resolved statically: names brought in by "import", nested functions, functions defined in the same file, functions for which there is already a definition in a "private" directory. But beyond that, name resolution starts getting dynamic according to the matlab path in effect at run-time. You can, for example, definitely create your own sum.m and if it is earlier on the path than the built-in sum.m then you will get your (or the third-party) implementation.
ILoveMATLAB on 4 May 2022
MATLAB keeps reinventing the wheel and does a bad job . The #1 rule of programing is never reinvent the wheel.
  • OPP: MATLAB OPP implementation is worse than all other well-known modern languages. Why? LabVIEW is actually worse but that is not a text based language.
  • Live Editor: Users wanted a Jupyter notebook like interface for MATLAB. Instead of creating an official stable feature rich plugin for Jupyter notebook, TMW released the live editor. I don't know how TMW could checked off/ released that product in 2016. (They probably ignored tester feedback) You did not need the end users’ feedback to know that it was too slow. The input lag made me feel like I was VNC’d into a computer oversees. Also, the execution time/ for loops….. I kept trying it from 2016- 2018. I have not touched it since 2018b.
  • Editor: I see a lot of complaints on the lack of modem IDE features. I agree. Before you create a new editor, I would recommend using an existing Opensource editor. I think it would be a good Idea to create a feature rich plugin for VSCODE.
Engineers always want to reinvent the wheel because it is more interesting, but it is not always worth effort. When TMW reinvents the wheel, it sometimes misses a lot of the qualities the made the original wheel great. This will overshadow the interesting features of the reinvented wheel.
Mike Croucher
Mike Croucher on 1 Mar 2023
Regarding Jupyter. MathWorks have now released a MATLAB kernel for Jupyter. Details at Official MathWorks MATLAB kernel for Jupyter released » The MATLAB Blog - MATLAB & Simulink
Steven Lord
Steven Lord on 2 Apr 2021
What do you mean by "change the size of a plot window"?
  • Change the size of the figure window
  • Change the amount of space in the figure window occupied by the axes
  • Change the limits of the axes to show a larger part of a plot that's larger than fits in the current view of the axes
  • (As a bit of a stretch) Change the width of the line or the size of the markers used to plot the line. [If you hadn't used the word "window" this would be a more plausible interpretation of your request.]
The plotting capabilities of MATLAB do offer a lot of functionality and with that must come some level of complexity. I will admit Handle Graphics does have a bit of a learning curve.
The main way I would recommend interacting with Handle Graphics objects is:
  • Find the handle of the object with which you want to interact. This could involve calling plot or other graphics function with an output argument, using the findobj or findall functions, or using the ancestor function.
  • Search the documentation for the task you're trying to complete to see if there's a function. Use axis or xlim to change the X axis limits, for instance.
  • Use dot notation to change the object's properties if there is no convenience function. f = figure; f.Position = newCoordinates; as an example.
One problem with your suggestion of "clean up this mess of features related to plot" is that the plot function has been around for at least 20 years (probably closer to 30 at this point) and people have written a lot of code that take advantage of those "mess of features". When we introduced the new version of the graphics system in release R2014b we did fix some long-standing bugs, introduced new capabilities, and eliminated or simplified some of the helper functions. Even though we tried to be careful about it and give plenty of warning, some users were still annoyed/upset with us for breaking their code. Doing a wholesale "blow up the system and replace it with something new" would be painful for both MathWorks and for long time users.
Allan Prince
Allan Prince on 2 Apr 2021
Why are the plot settings so difficult to find. For example, if I want to change the size of a plot window, I have to scour their webpage to search through each of a hundred different ways that plots can be modified. Many don't seem to be formally documented (at least not that I can find). They are embedded in responses to the help center and I have to read 50 of those before I find what I'm looking for.
I've had to create my own help center just to record all the features related to plot so I don't have to search for it next time I need it.
Something as commonly used as the plot feature should be quick and easy to use and it's worth their time to clean up this mess of features related to plot.
Martin Brorsen
Martin Brorsen on 27 Nov 2020
Compiled Matlab AppDesigner executables tend to forget functions when not used for some time
Samuel Gray
Samuel Gray on 21 Oct 2020
R2020b for Linux just wrecked my CentOS8 install.
It wouldn't install under my standard user account (needed access to /usr/lib and failed to get it) and then I tried to install it as sudo and that failed and then it wouldn't allow me to type anything in the email address text box when I tried it once more as a standard user. So I rebooted it and now it's throwing a dracut related error
".../etc/ does not exist, blacklisting all devices"
trying to shut down instead of completing startup and fails to do so then tries to start the GNOME Display manager and goes haywire. What fun. So R2020b for Linux is not compatible with CentOS8 after all I guess.
Note, these are problems just getting it installed and you know how long it's been since I've had an installer break a working workstation Linux install to the point where it is unable to boot to the desktop? This is why Linux users prefer open-source tools and why network-admins prefer daily backups, networked user data directories and stock images! So, "Matlab on Linux" yay, "the Matlab installer breaking the Linux install and requiring a reinstall+reconfigure with a probable reformat and erasure of all user data on the partition" BOO!
[does this happen with Python and Eclipse? Hm...]
Luckily I have an Ubuntu install on the same drive and a good rescue usb key.
Now I just need to figure-out how to fix the CentOS8 boot process. No big deal.
Still, this is like Windows 98 all over again.
(this does not help as it siimply changes the display server not the desktop environment, which is corrupt,
and so the problem just has a different manifestation but the same source)
Rik on 28 Sep 2020
@John: I crossposted your comment to the second thread, please continue the discussion there. Feel free to post an answer there yourself. If you choose to do so, I will repost my comment to your answer and delete my answer.
John on 28 Sep 2020
Matlab should 'update' the new version instead of installing the new version. The reconfiguration is a nighmare because it's done only once a year or so. The extreme example is firefox, which updates once or twice a day. The users don't need to reconfigure anything.
At least matlab should provide a choice with every new version: new installtion or updating on existing version (and keep all configurations as is).