MATLAB Answers

24

What frustrates you about MATLAB?

Asked by Oliver Woodford on 16 Feb 2011
Latest activity Edited by Asif
on 23 Oct 2019
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.

  27 Comments

NO ENTIENDO COMO DEFINE LA FUNCION
En este caso, la fuente de tensión es constante Vcc=10V y las condiciones iniciales son:
(0)=
Definimos f (función que representa el comportamiento del circuito) con el comando inline:
>> f=inline('[u(2);-2/2*u(2)-1/4.56*u(1)]','t','u')
f =
Inlinefunction:
f(t,u)[u(2);-2/2.4*u(2)-1/4.56*u(1)]
Rik
on 11 Jul 2019
You shouldn't be using inline anymore to define anonymous functions. Also, posting your question in English on its own thread increases your chances on getting an answer. Have a read here and here.
Asif
on 23 Oct 2019 at 16:26
I hate how add-ons aren't available for student or home license holders. For example, why should the HDL coder and verifier add-ons require a massively expensive professional license?

Sign in to comment.

145 Answers

Answer by Oliver Woodford on 16 Feb 2011

MATLAB's figure rendering and exporting functions are so full of bugs and "features" it defies belief. The rendering is very slow and stalls computations - rendering should be in a separate thread and not delay computations (unless specified by the user). It is crazy that you can't have a seperate colormap per axes, either.

  8 Comments

Steven
on 23 Jan 2015
These commenters are crazy, you can do those things if you take the time to learn how to use the graphics package with set and get you can get any result you want. You just have to learn how to write your code for matlab
@Steven: The issues raised here were rendering speed and bugs, not what can be rendered. I also disagree with your comment about being able to get any result you want. Volumetric rendering is non-existent, and solutions like vol3d don't look great. Also it is not possible to texturemap an arbitrary mesh, and the work-around of vertex coloring a much higher resolution mesh is beyond the scope of knowing how to use set and get.
As of R2014b, you can have a separate colormap per axes.

Sign in to comment.


Answer by Ian
on 28 Mar 2011

  • GUIDE is a such an underpowered mess. Very poor set of widgets, endless bugs and terrible performance in the Guide editor (try moving sets of elements with the keyboard and weep!). TMW has dragged along hidden support of more UI widgets likes tabs, why can't they just update GUIDE and bring it.them into the modern age? Yair Altman does more in one blog post than TMW does in each year's paired releases to make GUIs better in Matlab!
  • UNICODE support -- why is TMW so far behind on this!?
  • Graphics quality -- graphics and text should be anti aliased by default and better composited, the pixel vomit is unacceptable on such an expensive product and one where its competitors are so ahead in this regard.
  • Poor OS X support. Failure to copy vector figures to clipboard is my biggest gripe.

  8 Comments

The new graphics system in 14b is a good start - added uitab/uitabgroup and anti-aliased graphics (among many, many other enhancements).
MATLAB has made tremendous progress in Unicode support since 2011, so take a look again if you haven't lately.
The Matlab is fantastic tool to me. It do a lots as long as you known what are your input and expected out. I, indeed, finalizing coding Water Distribution Network Design Optimization tool, as it has no limit of number of pipes from different materials and pressure rates. This a major challenge to many optimization tools. Further, Matlab has assist me to plot and lay out XYZ of all networks.
The major challenge I have been faced is consume a lot of time when apply/looping through "for-end" which I have no way to escape it
Thanks all Matlab Community
Note: Unicode support in plots was added in R2014b. However, there is no obvious way to add Unicode in Latex.
Note: anti-aliasing of lines and text was added in HG2.

Sign in to comment.


Jan
Answer by Jan
on 16 Feb 2011

Using a C-compiler not included in the list of known compilers is horrible. "mex -setup" calls an M-file, which calls a PERL script, which creates a DOS batch file, which is interpreted by another PERL script, which calls the compiler through the command line interface.
Strange. A tiny M-file could create the same command line call to the compiler also. But it would be much easier to adjust it to a different compiler.

  7 Comments

The method of setting up compilers was completely rewritten a couple of releases ago, at least for MS Windows. I do not know if it is any better or worse... but quite different.
dpb
on 13 Nov 2018
At least as convoluted still and nearly impossible to make use of anything other than the one or two "blessed" compilers --
I had two subsystems(A and B). I want B inports which are conncected to which outports in A. Any ideas.

Sign in to comment.


Answer by David Young
on 28 Sep 2011

Overriding subsref and subsasgn in a class is spectacularly awkward.
The problem is this. Suppose you override subsref in order to change behaviour of obj(...). Then your subsref is also called for the syntax obj.propname. In order for it to handle this correctly (i.e. behave the same as the built-in subsref) it has to reimplement all the checks for access protections that are normally done by the system. For just how problematic this is, look at Daniel's answer to my question here.
Apart from this major difficulty, it's also inefficient for every subsref to have to switch on the indexing type ('.', '()', or '{}') on every call, and for the system to have to build a struct that includes the indexing type as well as the indexes.
As far as I can see, it would be so much better if the different indexing syntaxes called three different methods.

  3 Comments

Wait until you try and get your overloaded subsref function to handle colon and the other "odd" indexing notation: http://www.mathworks.com/matlabcentral/answers/6764-overloading-subsref
You would have thought that with the major overhaul of the OO system that they would have gotten it much better. Often simple OO things are inefficient and complex things are near impossible.
David Young
on 28 Sep 2011
Daniel: indeed!
SK
on 30 Apr 2014
Agree. subsref and subsassign are unusable and can be fairly called broken in principle. Also, once you have overloaded () for a class, you can no longer have consistent notation for arrays of that class type. The basic reason is the overuse of the () operator for array subscripting, instead of the more sane [].

Sign in to comment.


Answer by Oliver Woodford on 16 Feb 2011

It's very expensive (unless you're a student), especially if you use lots of toolboxes. Fortunately my company pays :), but if I start my own company I'll think twice about (ok, before) buying MATLAB.

  15 Comments

Rik
on 31 May 2017
I was indeed surprised to see that the price for a non-commercial home license is currently €119 for the base and an additional €35/toolbox. That puts it on the price level of an expensive hobby, instead of only being affordable if pirated.
Other real alternatives are either very different in what they can do (like R), or half of the functions are not implemented and much slower (like Octave). I think the price is still steep, but you can start off with Octave and then move on to Matlab.
I see people posting complaining that the Home version does not support HDL generation for boards that are $US1100 to $US33000.
Asif
on 23 Oct 2019 at 16:30
It doesn't make sense how the Home and Student licenses are not eligible to purchase the HDL coder and HDL verifier add-ons. Students and hobbiests would easily use these for FPGA and embedded projects.
Supported boards include Digilent's low-cost sub $250 options. If the HDL add-ons were available and priced similarly, I'd gladly fork over more money to Mathworks :).

Sign in to comment.


Answer by Robert Cumming on 16 Feb 2011

plot legends are not always placed in the "best" position - quite often its right slap bang on top of the data...

  2 Comments

Dan
on 22 Nov 2011
You can click on them (the legend) and move to another spot (even outside the axes). Also you can position the legend as an object at creation time or after by asiging to a variable and using "set".
Matt J
on 13 Nov 2018
You can, but shouldn't the default legend position be somewhere not covering data?

Sign in to comment.


Answer by Dan
on 2 May 2017

Functions and classes defined within a package should not have to import the package or refer to other members of the package with the package name ... the import should be automatic ...
Given the requirement to refer to the local package name within the class or function definitions ...
  • It is difficult to rename the package
  • It is difficult to place the package within another package
  • It clutters up the function and class code with import calls ...
Please fix...

  0 Comments

Sign in to comment.


Answer by Oliver Woodford on 16 Feb 2011

MATLAB is lacking tools for saving movies in decent compressed video formats (e.g. MPEG4, H.264 etc.). Currently I find myself saving a huge list of PNG files, then converting these to a video in an external application, which is far from ideal.

  2 Comments

Happily, this is becoming less true with every release, on Windows at least.
The secret of creating high quality videos on Windows is to use VideoWriter, an object compressed with Motion JPEG, and not movie2avi, which produces low quality video. So it is frustrating that, when you search the Help for "movie", and you find movie2avi, the only reference to VideoWriter is a single word at the bottom of the help page. I think there should be a warning that it has replaced movie2avi!

Sign in to comment.


Answer by Sean
on 27 Sep 2011

I would love to just write x++; instead of x = x + 1;

  6 Comments

If this is your biggest issue with the software, I'm very happy for you :)
Yes Me too, in Starting i am Confusion on thsi x++, Y--. that's why i try to use it may time. I am use this only.
Regards,
Adam
on 12 Apr 2019
Please don't use Matlab Answers for advertising links. I deleted the link you added here.

Sign in to comment.


Answer by Patrick
on 27 Oct 2011

The figure-export is a pain, if annotation are used they will move about, not all of them and not much and not to any order (at least nothing i could recognise) but sometimes a few mm in the odd direction.

  1 Comment

K E
on 25 Jul 2012
Also, quality of copied figures is poor (blurry lines/text) and requires workarounds like export_fig .

Sign in to comment.


Answer by Ian
on 28 Mar 2011

Lack of OpenCL support: TMW forces us to depend firstly on a toolbox for this functionality, and secondly on the vendor lock-in using CUDA. Mathematica builds this in to its core, not some toolbox, and provides both CUDA and OpenCL support so we aren't forced to a single GPU vendor.

  6 Comments

Happening to read Val's comment again just now: MacBook Pro's added NVIDIA graphics cards in June of 2012; I am using one of them right now.
Curtis
on 20 Jun 2013
They've had CUDA support for years and STILL the only way to get ANY OpenCL implementation is with third party plug-ins. Hopefully the massive hiring TMW is doing will start to change things soon.
I am told that OpenCL is more a framework allowing for the possibility of various actions being possible, but with considerable variability in what the different manufacturers support, and therefore Mathworks would effectively have to do different OpenCL implementations for each manufacturer and to specialize it for different models within the manufacturer.

Sign in to comment.


Answer by Csaba
on 4 Dec 2013

My current frustration is with the Matlab editor: when the same M-script source is open in both the Matlab editor and another code editor (certain things are more efficient in the other editor), and the Matlab editor detects a change that was made to the file outside, it reloads (which is correct) - but it also forgets about all location information from before the reload, and jumps to the beginning of the file.
I would expect this is just an oversight (how hard would it be to remember the line at which the cursor was before reload - even if the code change that triggered the reload shifted content, most of the time this would be by only a few lines or pages, still much better than starting from the top of the file every_time_ ...).
And if that's not feasible, at least letting the bookmarks survive the reload would be a reasonable work-around, but sadly no, they are erased as part of the reload as well.
Am I the only one having trouble with this?

  2 Comments

That does sound frustrating. I also have the same problem when I go to GUIDE and save it from GUIDE and return to MATLAB. It blows away bookmarks, breakpoints, etc.
yes, my Students also get the Same issues, I need some Guidence on this
Regards,

Sign in to comment.


Answer by Knut
on 5 May 2011

The fact that once you schedule a low-level function, you cannot in any way stop it. Such as conv(zeros(umpteen,1), ones(umpteen,1)). A big red, working "stop" button would have been nice.
I like to run my scripts, insert break-points, then test stuff using command-line on the variables available. In recent versions, I have not been able to define new variables that way easily, having to declare them as global (??)
I would have really liked the core matrix-syntax to be even cleaner (not having scalars being 1x1 2d arrays for instance).
I would have liked some sort of extension of the matrix syntax into tensors.
I really hate the frustration when I go from compact, vectorized, readable MATLAB-code and have to dip my toes into "real" programming languages, where you spend most of your time concentrating on the implementation instead of the functionality :-D

  1 Comment

Steven Lord
on 20 Aug 2019
For the first point, this won't work for all "low-level function"s but the Pause button in the Editor, introduced in release R2016a, may be of use to you as may the Array Size Limit preference introduced in release R2015a.
Yes, I know I'm responding to an eight year old message. I just noticed it and wanted to add the relevant information in case others had the same frustration.

Sign in to comment.


Answer by tom 1line=1bug on 12 Sep 2011

Frustrating factoids after living with Matlab since version 4.x:
1. Ambiguous use of parenthesis ([([( indexing operations and function calling )])]). I wish Matlab's syntactic sugar could differentiate between this two actions, using parenthesis and something else (i.e. like Mathematica's use of parenthesis vs square brackets)
2. Poor quality graphics (already mentioned in detail by other fellows)
3. Excessive "commoditization" or segmentation of functionality that should be part of the core Matlab product (e.g. signal processing, image processing, statistics, and pdes).
4. I wish there was better quality control when rolling out toolboxes. The seemingly lack of coding style/guidelines is particularly annoying. Even toolboxes meant to be used together have inconsistent syntax and seem a bunch of functions "bolted-on" to Matlab, rather than coherent extensions of M language.
5. I hopelessly wish there was first-rate support for functional programming.
6. Very poor support for time series and data structure requiring multiformat date/time indexing.
99nth. Non-specific gripe: Over time Matlab is becoming less and less my primary platform for scientific computing and algorithm development, and more often than not just a target for deployment (meaning re-writing whatever project in the M language) because the customer/client is using it, or because a particular toolbox is a time-saver. I remember the days of yore, when Matlab looked like a hammer and most problems looked like nails. Now I feel that the handle of the hammer is a Baroque wooden carving, richly ornamented, weighting 120 lbs... More surprising is the strange comfort of spending so much more time working with Mathematica's superhuman -indeed extraterrestrial- capabilities for algorithm development and testing, and the "translating" to Matlab upon request. I guess necessity is the mother of strange companions...

  1 Comment

Commoditization is an excellent point. It should be an answer by itself.

Sign in to comment.


Answer by Richard Finley on 30 Jan 2012

I have been a licensed user of MATLAB for the past 20 years. I am also a big Mathematica user and sometimes use Maple and Mathcad and of course I love R and Python. I have enjoyed using MATLAB for my numerical work, but the licensing hassles have driven me to the point that I am considering just dropping it after all these years. I don't mind paying the (substantial) price for my license -- but then just let me do my work -- whether it is on my main desktop or my laptop. I used to just get the update CDs and my license number by email and no hassles. Are you really making more money by stopping piracy with all your licensing hassles? I doubt it. You are driving away your paying customers/user base. I sympathize with this (former) user: http://mybrainextension.blogspot.com/2011/07/aaaarrrrrrgh-matlab.html

  4 Comments

Show 1 older comment
Jan
on 25 Jul 2012
Without doubt FlexLM is neither smart, nor user-friendly. I've struggeled with several other software package also, which use this license manager. The usual procedure is 12 minutes for installing the software, 2 hours trying to install the license manager, one hour for emails and phone calls to the technical support, who comes in the next day, look of what I have done so far. Finally the sessions end with something like: "I've called the developpers this morning and they told me, that you need the computer's name and nothing else." But after we typed in the IP, the software suddenly accepts the connection to the license server.
The FlexLM software is a really bad choice. It is very sad, that TMW has decided for this service, because all it does is impeding the legal usage of Matlab substantially.
Mike
on 25 Jul 2012
The fact that if I want to deactivate an old version of matlab on a PC with 2 versions, since there is a new release out and flex deactivates all versions on the PC is a pain.... Why doesn't it just deactivate the one selected?
Mace
on 7 Oct 2015
I agree. License hassles are the main reason why I'm switching to R. I constantly am interrupted by license issues. E.g. I drop wifi or just vpn and matlab does not execute commands without even notifying about it - it just does nothing while I think it's computing. Or I wake up my mac and before it connects to wifi matlab already shuts down saying it lost connection to the license server.

Sign in to comment.


Answer by Chad Greene
on 27 Mar 2015

I'd like new installations of Matlab to be able to grab preference settings from previous versions installed on my computer. It's minor, but spending 20 minutes sifting through M-Lint settings and fonts and background colors is just enough of a hassle to keep me from upgrading twice a year. I wish upgrading Matlab were as easy as upgrading Firefox.

  12 Comments

Serge
on 29 Jul 2018
I have spent days synchronize MatLab preferences and shortcuts across computers... and the process still confuses me!
Note: I despise the ribbon ( a waste of screen, particularly on a laptop ) so I hide it and use ‘Quick Access Toolbar’. I also rely on docking (editor + figure + command line). However it is not possible to add figure commands to the quick access, so I spend hours hacking figure shortcuts (zoom, etc) with icons, which kind of works. But then copying the shortcuts to another PC is almost impossible! One has to copy all the icon figures and FavoriteCommands.xml, MATLABDesktop.xml, MATLABQuickAccess.xml, matlab.settings, etc from C:\Users\<user>\AppData\Roaming\MathWorks\MATLAB\R2018a, and then fix the shortcuts to point at the icons… argh!
What I have so far:
.
1. There needs to be a sync option for preferences and shortcuts using the MatLab account through the web.
2. Also an option to export/import all preferences and shortcuts as a file.
3. Allow user to add figure icons to the quick access toolbar.
4. Allow user to use classic toolbar (ie pre ribbons).
As I answer questions about a wide range of releases, I sometimes use one of the pre-ribbon releases. These days, those feel pretty harsh on the eyes!
Rik
on 29 Jul 2018
I would agree. I started with Matlab just before the ribbon was introduced, and at first I thought it was superfluous, but now it just feels part of the look of Matlab. It does add an easy way to get to often used controls.
RE space issue: I have my taskbar to the side, and I have an IM program docked, so my usable area is close to 4:3 screen ratio, which I think is way better.

Sign in to comment.


Answer by David Young
on 13 May 2015

The inputParser / validateattributes / validatestring collection of function parsing and checking tools.
  • You have to write too many lines of code to do even simple things.
  • I haven't done any testing, but I wonder about the overheads: all that object, anonymous function and cell array construction and access.
  • Despite the complexity and apparent power, there are silly limitations. For example, required arguments must precede optional arguments must precede name-value pair arguments. Given that there are validation functions, there's no need for this.
  • There was an absurd change of name of one of the methods of inputParser from addParamValue to addParameter . The documentated functionality appears to be the same, so there was no need for the change, but this is the biggest cause of users of old versions to run into trouble with my code on the FEX.
  • The functions don't work nicely together. For example validateattributes always throws an error for invalid inputs, rather than returning a result. That means that you can't combine two calls to it into a single expression for a validation function (e.g. my input could be empty, or a row vector of length 3). I can work round this with a wrapper function that catches the error; but integrated design would have avoided the need.
  • Another failure to integrate functionality: validatestring can handle abbreviated inputs nicely, but if you use it as a validation function for inputParser the information as to which possible input whas given is lost, and you have to call it again on the parsed results.
There's more to say, but I hope that makes the point. There's a strong case, I think, for starting again in this area, or failing that for offering a migration route to functions that do work together properly.

  3 Comments

Chad Greene
on 13 May 2015
Agreed on all counts. I've made a few attempts to use the built-in input parsing functions, but they're awful. They're unintuitive and incompatible across versions. Manual parsing can be a pain, but at least if I design the parsing myself I can have control and confidence that it will not throw errors.
Shameless ad: My FEX contribution InputPreprocessor is an effort to solve most of the items on your list. I've used InputPreprocessor on a regular basis for some seven years (with a few updates) and I still thinks it is useful. Yes, it adds to the execution time.
David Young
on 13 May 2015
Thank you per, I shall look at it. (I'd still TMW to improve what they provide, of course.)

Sign in to comment.


Jan
Answer by Jan
on 21 Feb 2011

"load file.mat" saves 3 keystrokes compared to "load('file.mat')", but I've spent more than 600 keystrokes in answering desperate question in CSSM, Answers and goMatlab about using a variable as file name.
The HELP text of SAVE and LOAD explains the needed arguments explicitely. Therefore it is not Matlab, which frustrates me in this point, but the fact that a lot of Matlab beginners are overstrained by the tricky and actually not useful feature of non-functional forms of commands - and that even a good help text cannot intercept these problems.

  3 Comments

Steven Lord
on 20 Aug 2019
At some point between 2011 and now, the help text for save and load now mention the command form of the functions and state that users should not use the command form if the filename is a variable. The documentation now includes the same caution in several places (in the Description section and in the description of the filename and variables input arguments.)
dpb
on 20 Aug 2019
But who actually reads the documentation is the problem often...or at least far enough down to get to the admonition (or having done so, at their stage of familiarity w/ ML and programming in general often, actually understands what they're being told)?
Rik
on 20 Aug 2019
I would suggest adding an m-lint warning for this syntax, but I doubt that would be implemented, and I doubt it would help (for the reasons dpb mentions).

Sign in to comment.


Answer by Royi Avital on 27 Mar 2011

  • The lack of built in 64 bit compiler (MATLAB used to work with Photoshop out of the box).
  • The graphics stack performance. It's so slow!
  • Editor - I wish the editor could add rich text editing capabilities for code documentation (Adding LaTex, Graphs, etc...).

  2 Comments

Jan
on 30 Mar 2011
And the editor needs a block selection.
Steven Lord
on 21 Mar 2019
Royi Avital wrote: Editor - I wish the editor could add rich text editing capabilities for code documentation (Adding LaTex, Graphs, etc...).
Jan wrote: And the editor needs a block selection.
The Live Editor (introduced in release R2016a) provides rich text editing capabilities, including (as of release R2018a) the ability to select and edit a rectangular area of code.

Sign in to comment.


Answer by Eric Keller on 8 Feb 2012

there are sometimes where you just have to kill matlab because it would rather complete a nonsense calculation rather than listen to I really didn't want to know quite that much. I swear this happens every time I have a short deadline on a presentation. Now I just want to go home, but I promised to do a presentation before I leave.

  2 Comments

And when it breaks down or starts to annoy
Or grinds when it moves
And gives you no joy ...
Steven Lord
on 21 Mar 2019
The array size limit and the ability to pause a running file may help with this.
Note that the the documentation states "MATLAB pauses execution at the next executable line" so if MATLAB is in the middle of an operation (a large matrix multiplication, for example) it may take some time for that operation to complete and MATLAB to reach the next executable line.

Sign in to comment.


Answer by Chad Greene
on 12 May 2015

I'd like a more helpful message with Undefined function errors. I know what the error message means now, but there was a time when
Undefined function 'foo' for input arguments of type 'double'
did not help me understand the cause of the error. Judging by the number of times that question has been asked on the Answers forum, it may be helpful to add a little sentence explaining possible causes of Undefined function errors.

  3 Comments

Guillaume
on 13 May 2015
I definitively second this. It's clear that new users do not understand the error message. Adding:
Most likely 'foo' is not on the path.
to the message would greatly help.
Chad Greene
on 12 May 2016
It's amazing how much verbs help us understand sentences. I've never understood the compulsion leave verbs out of error messages.
Rik
on 29 Jul 2018
Also since Matlab is generally really lax about the input type. If a function requires a specific data type, a specific error will be thrown. Adding that information only confuses users.

Sign in to comment.


Answer by David Young
on 28 Mar 2011

The use of degrees as the unit for angles in some functions of the Image Processing Toolbox. For instance
  • hough: takes arguments and returns results in degrees
as opposed to, for example,
  • atan2: returns result in radians, like the majority of angular functions in most languages and maths packages.
Apart from the irritation of having to keep writing *pi/180 here and there (and forgetting to quite often), it also makes it harder to teach students to use grown-up units (radians) in their programs rather than degrees.

  5 Comments

No element of a toolbox can be used by anyone who does not have a license for the toolbox. It would, for example, not be permitted to copy those files from the mapping toolbox and include them with your code that is intended to run without the toolbox.
I think we all can copy all the relevant content of deg2rad and rad2deg and distriute them without concerns about violating anything.
Rob Comer
on 21 May 2016
In R2015b and later, deg2rad and rad2deg are part of MATLAB itself.

Sign in to comment.


Answer by Sean de Wolski
on 31 Mar 2011

Mesh doesn't accept class 'single' inputs.

  1 Comment

Steven Lord
on 15 Sep 2016
With the introduction of the new graphics system in release R2014b, this now works.
v = single(-pi:0.1:pi);
[x, y] = meshgrid(v);
z = sin(x).*sin(y);
M = mesh(x, y, z)
With implicit expansion as introduced in release R2016b the code is even shorter.
v = single(-pi:0.1:pi);
z = sin(v.')*sin(v);
M = mesh(v', v, z);

Sign in to comment.


Answer by Pierre
on 31 Aug 2011

  1. I'd really appreciate improved MEX-debugging capabilities on Linux systems in regard to the user: Seriously, we're still using GDB? Launching MATLAB in CLI-only mode in order to see what your MEX is doing?
  2. Customizable color schemes for C-files... what's the matter of applying only half of the personalized colors? Use ALL or NONE if two separate color schemes are too much to integrate: if I optimize the color scheme for personal visibility and oversight, coding C is nearly impossible as it results on dark navy blue keywords and dark green comments on black background.
  3. Object oriented programming would be a nice feature. (I now, I now, it is supposed to be present, but there are so many times I develop OO systems according to OO concepts and design patterns and have to realize at the end, that behaviour isn't supported by MATLAB's OO-engine. It's more like "as-long-as-you-use-only-trivial-OO-concepts-you-wont-realize-it-just-looks-like-OO-but-in-fact-isn't"-concept. :(

  0 Comments

Sign in to comment.


Answer by Bjorn Gustavsson on 22 Sep 2011

Once every now and then when I type a character or two at the commnd-line and hit "tab" for expansion matlab simply freezes, and I have found no way to unfreeze it - so it is just to kill the process and start over again. This is very frustrating since at times too much work have gotten lost.

  2 Comments

Jan
on 22 Sep 2011
I hope you've sent a report to the technical support team mentioning the Matlab and OS version.
Sean
on 27 Sep 2011
Happens to me too sometimes.

Sign in to comment.


Answer by Charles Harrison on 17 Jun 2013

Things that frustrate me about MATLAB... most problems usually revolve around Simulink.
1.) The Simulink 'model' command does not accept complex data types. The 'sim' command does...the model command is array inputs only.
2.) Simulink often initializes super slow when executing sim commands.
3.) If you tell Simulink to not recompile your model by 'assuming up to date', if you dont also set the "error if out of date" field to none, then it still will check whether the project is up to date.
4.) Simulink's performance advisor and profiler are a joke. Simulink profiler will tell you information, but you cant do anything with that information.
5.) It amazes me MATLAB still does not allow for writing out symbolic math easily.
6.) GUI's are trick y to put together. It seems like GUIDE is an all or nothing approach. You eather start your GUI from GUID or your start from scratch. Once you started a GUIDE project through, its very difficult to continue as a .fig only file.

  1 Comment

When you refer to "writing out symbolic math", are you referring to input or output? As you familiar with MuPAD and MuPAD notebooks?

Sign in to comment.


Answer by SK
on 30 Apr 2014
Edited by SK
on 30 Apr 2014

I believe the following enhancements are sorely needed:
1. Ability to open files and at least read them while a computation is in progress without having to open a whole new instance of Matlab. It would also be nice if those files which can be edited safely could be edited while a computation is running in the background.
2. Echoing the original poster, the graphics functions are horrendously inefficient when multiple axes and figures are involved. They are also clunky to use and rather sparsely documented. I'm not even going to justify this as I suspect that there would be sweeping agreement from many.
3. The Matlab help system can be a lot more helpful. Why is it not even possible to resize the context sensitive help window that comes up when you click Help on 'Foo'.A better and more detailed organization of topics would be a start. Moreover why should one have to always open larger examples in the editor? The examples could also be inline with the html help with helpful comments embedded in the html. I find that the help reading phase is distinct from the experimentation phase.
4. Is it possible to better manage the plethora of Variable Editor tabs that open up when navigating into a cellarray, struct or deeply nested variable. Perhaps an option not to open a new Variable tab every time, but overwrite the existing tab. Or perhaps a complete rewrite of the Workspace Window so that it shows variables in tree format, with the contents of each level appearing in a tab to the right until the leaf variable is displayed in a final view tab. Something like in OSX finder or pathfinder.
5. When you right click on a function name or class name 'Foo' and select Open 'Foo', the file that is opened often has no relation to the file that should be opened. For example, If I select the 'Foo' in Bar.Foo, the Foo method in Bar should be opened, not some completely unrelated 'Foo' method - which is what happens currently.
6. Keyboard shortcuts to switch between the different numeric format displays.
7. Suppose there is a file called Foo in the current folder. Suppose you try to create a file called FooBar in the same folder. You start typing in the filename. The moment you have typed upto Foo, Matlab develops rigor mortis since the file name is now the same as an existing file name. It was really bad in a couple of versions ago, though I it appears to have been fixed in later versions.
8. Matlab was originally intended to be a matrix calculator. However, as with other tools, it is being used to do things far beyond what perhaps had been envisioned at the time of its creation. Complex projects with thousands of files are not uncommon. So would it be possible to have more detailed syntax highlighting? For example see the C++ section of the syntax highlighting in the latest version of Visual Studio. Perhaps that can be used as a role model.
8. Ability to Disable Drag and drop in Editor and in Current Folder Window.
9 Scrolling Figure Windows! I mean, is it all that difficult to implement or do the people at Matlab feel that they would be taking the fun out of the user's lives. Graphics is no longer used only to publish things on paper. People seriously want to inspect large amounts data visually on the computer screen.
10. Abilty to undock windows as group. For example suppose I want just the Workspace Window and tha Variable Editor in a single fullscreen window. Ishould be able to undock them into a single window. Makes sense?
The list can go on, but the civilized limit of 10 has been reached. Anyway, these are the some of things that have frustrated me at one time or another.
**On the other hand here are some good features that Matlab already has.
1. A very easy to use profiler, if not always so accurate.
2. Core IDE features work well, (workspace, variable and text editor) even if somewhat basic.
3. Easy to use parallelization and improving. Core algorithms are well parallelized.
4. Execution times for core algorithms are really good and appear to be constantly improving over releases.
5. Debugger works well and is easy to use.
Regards,
Sandeep

  0 Comments

Sign in to comment.


Answer by Marco
on 24 Mar 2015

What would you think about MATLAB if you got a new computer (nothing special, just one of the bigger models from the next doors electronic super store) and finding MATLAB to not fully take advantage of its 2 CPUs and 1 GPU without now additionally first having to purchase the Parallel Computing Toolbox? Isn't this like having got the same new computer with a SDD and a huge HDD in it, but your office software blocks you to save more data on it without additionally first purchasing also the Full-Access-To-Your-Storage-Drive license? Oh damn, I now made the mistake to mention this thought in public, now it will be my fault if for future HDDs such toolbox will become introduced to MATLAB.

  1 Comment

There's a bit more to the story than this. I addition to support allowing users to express parallelism explicitly with Parallel Computing Toolbox, MATLAB and some toolboxes make extensive use of implicit multithreading. This leverages multiple cores on your machine with no action needed. There are a bit more details on this MATLAB Multicore page.

Sign in to comment.


Matt J
Answer by Matt J
on 1 Sep 2015

This is a mild thing, I guess, but I really wish the colon operator had precedence over transpose() and ctranpose(). In other words, I would like the following result to be unaffected if I omit the parentheses.
>> (1:3).'
ans =
1
2
3
It gets a little tiresome to include parenthesis every time you want to generate a column vector and, since the operands to colon are supposed to be scalar in standard MATLAB anyway, I think this is the more natural precedence.
Yes, colon() can be overloaded to support nonscalars using MATLAB OOP features, but that's a minority use case, I think it's safe to say.

  2 Comments

[1:8] gives a row matrix {1:8]' gives a column matrix version student R2016a
Matt would like to be able to use
1:3.'
to get the column vector.

Sign in to comment.


Answer by Paul
on 11 May 2016

It is not possible to view the contents of a 'containers.Map' type of variable in the Variable Editor. This makes code using this type difficult to debug.

  1 Comment

Guillaume
on 11 May 2016
+1. It would also be great if you could directly see the keys and values at the comment prompt in addition to the properties of the map.
I guess for that, since containers.Map is not sealed, you could derive from it and matlab.mixin.CustomDisplay to customise the command prompt display.
As far as I know there is no documented way to customise the variable editor display.

Sign in to comment.


Answer by yunhui zhou on 19 May 2019

  1. Mathworks hides the direct download link for update release since Matlab R2018b, and force regular users (not license administrators) to update the software by clicking the bell-shaped button within the software.
  2. I cannot use Matlab anymore when it is downloading the update release.
  3. The download speed from my lab to the Mathworks's server is awful.
  4. I have serveral Matlab installations (same version) to maintain in my lab, and without an offline update release installation package, they all have to download the same update package and go through this awfully long update process. I have no idea why the Mathworks thinks updating within the software is the optimal experience.
Solution for anyone suffering from this:
The update package for Matlab R2018b can be directly downloaded at: https://www.mathworks.com/downloads/web_downloads/show_updates?release=R2018b
The update package for Matlab R2019a can be directly downloaded at: https://www.mathworks.com/downloads/web_downloads/show_updates?release=R2019a

  0 Comments

Sign in to comment.


Answer by Oliver Woodford on 16 Feb 2011

It can be very slow, compared to the same functionality written in, say, C.
For example, for loops filling in cell arrays are slow. Also, code like:
A = sin(abs(A)) .^ 2;
is (I believe) not optimized to do all three operations on each element simultaneously. Rather, it churns the entire array through memory 3 times.
However, it's getting faster all the time. :)

  4 Comments

Show 1 older comment
I want to have my cake and eat it. It would be great to never have to resort to a C mex file, but sadly I often do.
I hope it doesn't do what you described.
If it does, They need to optimize it fast.
The Julia language appears to offer the functionality of MATLAB with the speed of C, according to their benchmarks. And this blog post tackles exactly the point I make in the answer above. The solution? Devectorization!

Sign in to comment.


Jan
Answer by Jan
on 16 Feb 2011

FOPEN has lost its Vax-D support in Matlab 2008a without any notice in the documentation. The argument from TMW was, that computers needing this numerical format are not manufactured anymore and the further support will take too many resources from TMW.
Stopping the support without mentioning this in the docs took too many resources from me.

  5 Comments

James Tursa
on 23 Feb 2011
I have prototype functions working that overload fopen, fread, and fwrite and provide seamless backwards compatibility for VAXD/G support (i.e., you don't have to change any of your code that uses VAXD/G options). When I get some time I will polish them up and submit them to the FEX. Be careful of the submissions 22675 etc noted above since they contain bugs.
Jan
on 24 Feb 2011
@James: Thanks. I've published a C3D-File converter (format used in the motion-analysis), which is downloaded 20 to 50 times per month since April 2009. It seems that at least about 1000 other users suffers from this compatibility limitation also.
Stephanie
on 4 May 2011
Unfortunately for me this is a continuing problem. ALL my data is in the vaxd format. I will probably have to pay a full time employee to convert all my files (1975 to present) and check that it is converting correctly. Mathworks has been working with me on fixing the freadVAXD function so I can upgrade from 2008a in the mean time. This is the first time I looked into different programing languages. Separating people from there data is never a good idea.

Sign in to comment.


Answer by Matt Tearle
on 21 Feb 2011

The way that anything that turns char into cell arrays strips spaces when it does so. Sometimes -- often, in fact -- I want those spaces. Would it hurt to at least have the option?

  3 Comments

Wouldn't mat2cell work?
a = 'aaa ';
b = 'bb';
c = ' C '
A = strvcat(a,b,c)
mat2cell(A,ones(size(A,1),1))
The strvcat() step adds spaces to short lines, and the mat2cell is going to preserve those introduced spaces.
Steven Lord
on 21 Mar 2019
Consider using string arrays rather than a cell array of char vectors.
>> A = ["abracadabra"; "hocus pocus"; "trailing spaces "]
A =
3×1 string array
"abracadabra"
"hocus pocus"
"trailing spaces "
If you need the char form of one of the elements of A (because you want to pass it to a function that doesn't yet support string inputs) that's easy and won't strip the trailing spaces.
>> c = char(A(3))
c =
'trailing spaces '

Sign in to comment.


Answer by per isakson
on 27 Mar 2011

To produce diagrams for a report is often quite frustrating. I've seldom try to do anything special because of the risk to waste my time and end up with a disappointing result. However, now I try and I'm indeed frustrated.
Background:
  • A simulation study and I want to present the result in a few Trellis Displays (plot matrix)
  • MsWord and I want to CopyFigure&Paste the diagrams into the report, i.e. use the meta file format (emf). I believe that with MsWord emf is better than eps. However, export_fig doesn't support emf(?).
  • One Trellis Display contains 3x3x3=27 grouped bar graphs showing histogram data. It is readable and useful!
Approach:
  • Put the axes on a figure, which has the aspect-ratio (and size) of an A4-paper
  • Absolute units so that I can measure with a plastic ruler on the print-out and adjust the code based on the reading (without tricky calculations).
  • Crop the white margins of the figure.
  • Edit Copy Figure | Paste into MsWord | and finally convert to Acrobat PDF.
Causes for frustration:
  • Some elements of the Trellis Display are not displayed on screen. OK, MATLAB had choosen OpenGL. Painters does a better job in this case.
  • The "Trellis strip" above the bar graph interferes with the box of the bar graph. Adjusting the positions doesn't really help. OK, the order in which axes are created is important. I have to create the strip before the bar graph (or better use UISTACK).
  • Handle graphic objects of the Trellis Display are dislocated on the printout. OK, I hadn't made sure "all" units were set to normalized before exporting/printing. The Mathworks calls MATLAB a high level language and ask me to handle this "feature" of PRINT. MLINT could at least have given me a warning.
  • MATLAB doesn't provide a crop-figure function (Windows platforms). However, with TightInset I was able to improve my old crop_figure.
  • The width of the bars vary. (I call that a bug.) In the worst case a few bars are only half as wide as the widest. I've seen something similar with IMAGE. In that case changing painters to zbuffer solved the problem, but not this time. OK, adjusting BarWidth seems to help somewhat. There seems to be a minimum width.
Will a new and better graphic support be part of R2011a? I've waited so long! However, this litany reduced my frustration a bit. Now, I will overlook the taints in my Trellis Display and do something useful.
/ per

  0 Comments