MATLAB Answers

Oliver Woodford

What frustrates you about MATLAB?

Asked by Oliver Woodford
on 16 Feb 2011
Latest activity Commented on by Walter Roberson
on 2 Jul 2015 at 7:54

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.

  11 Comments

Joseph Areeda
on 1 Jun 2015

Hi Walter,

Are you using GUIDE based GUI apps?

Joe

Oliver Woodford
on 1 Jun 2015

Joe, your comment is really an answer.

Walter Roberson
on 1 Jun 2015

I avoid GUIDE based GUIs. I wrote my own layout routines to do layout at run-time.

94 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

Oliver Woodford
on 13 Apr 2015

@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.

Oliver Woodford
on 13 Apr 2015

As of R2014b, you can have a separate colormap per axes.


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.

  5 Comments

QiQin Zhan
on 28 Feb 2013

You just say what we all want to say about it.

Oliver Woodford
on 13 Apr 2015

The App Designer will hopefully improve things.

Robert Cumming
on 14 Apr 2015

An alternative is to try out this GUI Toolbox as a completely different way to design and build GUIs.

Includes a guide equivalent. No guidata, no handles, an easy to use GUI API with lots of methods. Free demo version includes many examples.


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.

  11 Comments

Image Analyst
on 21 Mar 2013

Perhaps there could be a MATLAB-Elements, like Adobe Photoshop, or a cloud version, again, like Photoshop: http://www.adobe.com/products/photoshop/buying-guide.html

There is the standard Photoshop version for $699, Photoshop Elements for $99.99 (a real bargain), and a monthly Photoshop Cloud for only $20 per month.

Walter Roberson
on 21 Mar 2013

MATLAB and associated toolboxes are priced at a point where it is not feasible for non-students to use the software non-commercially, such as volunteers, or freeware / donationware, or low-budget NGO. TMW has no legal obligation to provide lower-cost licenses for those purposes, but we can still acknowledge the fact that personal licenses are more or less confined to the well-to-do individuals.

Steven
on 23 Jan 2015

Cloud versions are BAD! but good if you wan't to own it for a month and never use it again


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

Daniel
on 28 Sep 2011

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 [].


Jan Simon
Answer by Jan Simon
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.

  3 Comments

Jan Simon
on 4 Apr 2011

I wanted to add the optimization flag /arch:SSE2 in my MEX call in Matlab 2009a. This works with:
mex -O OPTIMFLAGS="$OPTIMFLAGS /arch:SSE2" func.c
Because I have to do this programmatically I need the functional form and tried:
mex('-O', 'OPTIMFLAGS="$OPTIMFLAGS /arch:SSE2"', 'func.c')
>> ERROR: flag /arch:SSE2 is not recognized.
Ugly parser! This is the correct calling sequence:
mex('-O', 'OPTIMFLAGS="$OPTIMFLAGS', '/arch:SSE2"', 'func.c')
So I have to split the string inside the double quoted section, although these double quotes are exactly needed to signal, that the string should not be split! This is a drawback of the complicated pipeline as BAT-> M-> PERL-> Compiler.

m4 Chrennikov on 27 Sep 2011

Jan, you can always edit *.bat files directly.

dpb
on 24 Mar 2015

But why should one have to is the point...


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...

  1 Comment

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".


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

Oliver Woodford
on 22 Nov 2013

Happily, this is becoming less true with every release, on Windows at least.

Wyken Seagrave on 14 May 2014

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!


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.

  5 Comments

Val Schmidt
on 28 Feb 2012

I agree with this one!!! I'm a mac user and since macs don't use Nvidia graphics cards it is very difficult to use the GPU.

Walter Roberson
on 17 Jun 2013

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.


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

Oliver Woodford
on 28 Sep 2011

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


Answer by Sean
on 27 Sep 2011

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

  4 Comments

Jan Simon
on 27 Sep 2011

This has been discussed in CSSM repeatedly. It would concern MATLAB's fundamental methods for addressing variables. I do not assume, that this will be implemented.
But I see the benefit. A dirty C-Mex implementation is possible using some undocumented API functions. But I will not implement an instable method, which save micro-seconds, but can cause weeks for debugging.

Wilfred
on 16 Nov 2011

Funny, in Simulink Stateflow (action language) this is already possible.

Andrew Reibold
on 26 Sep 2014

If this is your biggest issue with the software, I'm very happy for you :)


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

  3 Comments

K E
on 25 Jul 2012

Also I find the license manager cryptic for managing a small group of user licenses. If I have a license management task, I almost never open up the license manager and succeed on my first try; I always end up calling/emailing tech support.

Jan Simon
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?


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...).

  1 Comment

Jan Simon
on 30 Mar 2011

And the editor needs a block selection.


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

  0 Comments


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 .


Jan Simon
Answer by Jan Simon
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.

  0 Comments


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.

  4 Comments

David
on 12 Mar 2013

It appears that rad2deg.m deg2rad.m radtodeg.m and degtorad.m all exist within the mapping toolbox. Now, I don't know whether I can use those functions without requiring others to have a license for the toolbox. This is dumb. Pick a name for the function pair and make them built-ins.

Walter Roberson
on 12 Mar 2013

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.

Bjorn Gustavsson on 22 Nov 2013

I think we all can copy all the relevant content of deg2rad and rad2deg and distriute them without concerns about violating anything.


Answer by Sean de Wolski
on 31 Mar 2011

Mesh doesn't accept class 'single' inputs.

  0 Comments


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


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 Simon
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.


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.

  1 Comment

Walter Roberson
on 9 Feb 2012

And when it breaks down or starts to annoy
Or grinds when it moves
And gives you no joy ...


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

Walter Roberson
on 17 Jun 2013

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


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.

  0 Comments


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.

  3 Comments

Chad Greene
on 27 Mar 2015

Alternatively, Matlab could simply adopt my default settings as its default settings for everyone.

Sean de Wolski
on 30 Mar 2015

MATLAB does grab settings for the previous release. I.e. if you skip a release you lose this benefit.

You can also always try copying the prefdir from an old release to a new one. It often works.

And I think they should just adopt my settings for everyone!

Chad Greene
on 30 Mar 2015

Ah, good thinking Sean!


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.

per isakson
on 13 May 2015

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.)


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

Oliver Woodford
on 16 Feb 2011

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.

Royi Avital
on 28 May 2011

I hope it doesn't do what you described.
If it does, They need to optimize it fast.

Oliver Woodford
on 5 Dec 2013

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!


Answer by Jan Simon
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 Simon
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.


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?

  2 Comments

Teja Muppirala
on 28 Mar 2011

Wouldn't mat2cell work?

a = 'aaa ';
b = 'bb';
c = ' C '
A = strvcat(a,b,c)

mat2cell(A,ones(size(A,1),1))

Walter Roberson
on 28 Mar 2011

The strvcat() step adds spaces to short lines, and the mat2cell is going to preserve those introduced spaces.


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


Answer by Walter Roberson
on 28 Mar 2011

Schedule keeps slipping on the DWIM (Do What I Mean) toolbox.

  2 Comments

Matt Fig
on 28 Mar 2011

And that's the one that could send the entire MW development team to Geneva!

Star Strider
on 25 Jul 2012

That brings to mind something that I read was posted on the Stanford University computer bulletin board sometime in the early 1970s:

     I really hate this damn machine!  
     I wish that they would sell it.  
     It won’t do what I want it to,
     But only what I tell it!  

I’ve certainly had days like that.


Answer by Aleksander
on 28 Mar 2011

The database toolbox is way too sensitive: You have to use string commands in order to have linebreaks in your code, or you are doomed with one loooooooong sentence! It's also too picky regarding the syntax, considering it's supposed to support several different SQL languages.

Start giving out the source code for webinars a day in advance, rather than several days later. That way people can actually play around with the code, and the presenter can go through some functions etc but spend more time on Q&A and applications.

Call me old-fashioned but I much prefer the "old" printed User Guides for the Toolboxes. I'd be happy to pay for them. When I need to check if there's an update or additional info I'll go online, but for most purposes I just want to grap the guide to look something up quickly without cluttering my screen with help windows.

  1 Comment

K E
on 25 Jul 2012

You can get some PDF manuals here and print/bind them at your local printer. I agree, the help windows are only useful if you have a specific command to refresh your memory about, but not if you want to get a big picture (for example, regexp is covered in several pages in the documentation).


Answer by Sean de Wolski
on 17 May 2011
plot(1:10,'b-',3*(1:10),'r')

Throws an error. MATLAB, you know how to plot against indices when there is only one vector, why not two after a line style string?

  0 Comments


Answer by Guy
on 21 Oct 2011

The command editor is horrible: quaint and tedious and so frustrating to use. Compare it to the functionality present with GNU readline. Using the latter I can easily recall previous commands using quick keystrokes to search for commands containing a given string and quickly modify the command and execute it. In the matlab command editor you have ... the arrow keys. How quaint. Yes, you can type characters and hit the up arrow and recall earlier commands that started with that string. Be still my beating heart.

  0 Comments


Answer by Eric Keller
on 30 Jan 2012

I know nobody writes big programs in Matlab (haha), but it sure would be nice to have a source code browser. I don't use simulink much, but there is a nice browser in there.

  4 Comments

Walter Roberson
on 31 Jan 2012

What kind of features would you envision in a "source code browser" ?

Walter Roberson
on 31 Jan 2012

Should this perhaps be over in http://www.mathworks.com/matlabcentral/answers/1325-what-is-missing-from-matlab ?

Jan Simon
on 7 Feb 2012

I'm using a > 200'000 lines of code program distributed to about 2000 M- and C-Mex-files. When I want to modify a specific feature, it would be nice to have a treeview to the dependent functions. But if e.g. the data are shared by using a large struct, there is not automatic solution to find the functions which read or write a certain substruct.
Without doubt an object oriented approach is required to manage "large" projects - but this does not mean object oriented syntax necessarily.


Answer by Yash
on 25 Jul 2012

the constant version change and the no support for previous version commands

  4 Comments

Image Analyst
on 26 Jul 2012

If you don't want to upgrade versions twice a year, don't. No one is forcing you to. They typically will say for years beforehand that a particular function is deprecated (meaning obsolete, scheduled for removal, and recommending/warning you not to use it). I know they changed roipoly but kept the old roipoly as roipolyold and deprecated it, but thankfully they've kept it so far (about 5 years or so). It has some nice features the new one doesn't have (yet). So the support will last for many years after you were warned not to use a function.

Daniel
on 3 Aug 2012

@Lucas, in the FOSS community (not that MATLAB is part of that) biannual time based releases are pretty common with Ubuntu, KDE, and LibreOffice all doing releases twice a year. Just because a new release comes out every 6 months doesn't mean you need to upgrade immediately. I generally am a year or more behind.

Oliver Woodford
on 31 Oct 2013

I think a point being made here might be that bugs aren't fixed retrospectively in older versions of MATLAB, via updates/patches.


Answer by Matthew
on 26 Feb 2013

Matlab is the greatest, but it bothers me to no end that microsoft excel does bar graphs, error bars, and in general does statistics in a much more straightforward manner than matlab. It should not be so.

  1 Comment

Sean de Wolski
on 27 Feb 2013

Could you explain how?


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?

  1 Comment

Image Analyst
on 5 Dec 2013

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.


Answer by Krzysztof
on 11 Dec 2013

The following assignment is misinterpreted as a function call:

a { 1 } (0 == 0) = [];

Compare to a version that is ugly but correctly interpreted:

a{ 1 } (0 == 0) = [];

  5 Comments

Sean de Wolski
on 11 Dec 2013

Hi Krzysztof,

My answer is exactly what is happening. The entirety of the text after the first space following the a is interpreted as multiple string inputs to a function a. For example:

Create a function a that displays its inputs

function a(varargin)
varargin{:}

Then run your above command:

>>  a { 1 } (0 == 0) = [];

You'll also notice that every thing to the right of the a is purple, indicating a string input.

Once again, I see how this could be frustrating, but it is by design.

Krzysztof
on 12 Dec 2013

But this is also inconsistent with the reference documentation you refer to because it explicitly says that assignment has precedence over the space-following rule. Otherwise, " x = 1; " would be a function call too.

Daniel
on 12 Dec 2013

Sean, the documentation is so confusing on this issue and the result non-intuitive that I think it is a stretch to call the result expected.


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


Answer by SK
on 30 Apr 2014

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.

Regards, Sandeep

  0 Comments


Answer by SK
on 30 Apr 2014

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.

Regards, Sandeep

  0 Comments


Answer by SK
on 30 Apr 2014

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.

Regards, Sandeep

  0 Comments


Answer by SK
on 30 Apr 2014

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.

Regards, Sandeep

  0 Comments


Answer by Guillaume
on 26 Sep 2014

The special casing of the shape of the output of plenty of functions when arguments are row vector is madness to me.

Example: what is the size of:

A(B)

Answer: size(B) except when it's not

Other example, compare

A = [1 2 3 4 5]; %any row vector
union(A, [])
union(A, double.empty(0, 1))
union(A, double.empty(2, 0))
union(A, double.empty(0, 2))

with

union(A, double.empty(1, 0))

  2 Comments

Titus Edelhofer
on 26 Sep 2014

Interesting. But to me it looks reasonable in fact: the rule is, output is row vector, if both input arguments are row vectors, and column vector in all other cases.

A row vector is a matrix with 1 row (independent of the number of columns, could be 1, 2, 5 or 0). From your examples only double.empty(1,0) qualifies as a row vector.

Titus

Guillaume
on 26 Sep 2014

You think that the union of a set with the empty set should not always be equal to the original set?

In my opinion, it is wrong to have a special behaviour for a particular subset of valid input.


Answer by Michael Haderlein
on 5 Feb 2015

Some frustration not about Matlab but about the answers forum here: These myriads of spam "questions" related to relationship issues and magic stuff in Near East and south-eastern Asia. I guess they are created by spam bots and I am aware that it's not quite simple to protect from them - but is there really no way to stop it? Right now, there are 7 of the first 50 questions which are not spam.

  9 Comments

Image Analyst
on 14 Feb 2015

Does anyone know how to use a bot to clean out the spam quarantine? I was experimenting with java robot but it's tedious and time consuming.

Star Strider
on 14 Feb 2015

Isn’t that what interns are for? ;-)

per isakson
on 14 Feb 2015

At the moment there are 274 spams in the "spam quarantine". As far as I can see these are not visible in Answers.


Answer by Jian
on 20 Feb 2015
Edited by Jian
on 9 Mar 2015
1. the newly implemented microsoft style of top menus.
2. lack of easy viewing property / function list: 
 a. properties (e.g. list of figure properties)
 b. functions (e.g. list of built-in callback functions)
you need to go over and over to find what's needed. Matlab should list out all related properties or functions in the help when you find one of them.
 c. after saving a figure, for example, you have to go through the entire sub-folder browsing back to the place you were just in. Why can't Matlab just do it as millions software back to the same place you were just there?
 d. People only upgrade to new version once a year or once every other year and not necessarily remember what were the cumulated settings since installation of the previous version. Why can't Matlab just do it like other software, say firefox. Every time you upgrade, option will ask you:"upgrade settings?". I'm sure 99% people will click "Yes".

  0 Comments


Answer by Royi Avital
on 24 Mar 2015

There 2 main things I want in MATLAB:

  1. OpenCL support so we'll be able to use AMD graphics card which have great Double Precision support (As opposed to nVidia).
  2. Better far improved JIT engine. The world has made tremendous progress in the field of JIT engines. We want to see it in MATLAB as well.

  0 Comments


Answer by Chad Greene
on 24 Mar 2015

No reliable way to kill a computation when you give Matlab a bigger bite than it can chew. This is the kind of innocent-looking mistake that leads me to a data-losing Force Quit about once a week:

m = repmat(ones(1e6),1e6); 

  2 Comments

Sean de Wolski
on 24 Mar 2015

In R2015a you can now set an upper limit on an array size as a percentage of RAM.

This won't cause a bunch of small arrays from causing you to run out but will stop that repmat command that you have above.

Chad Greene
on 25 Mar 2015

Very cool!


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.

  1 Comment

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.


Answer by Robert Cumming
on 16 Feb 2011

removal of working version (from 6.5 onwards) on HPUX.

  0 Comments


Answer by Sean de Wolski
on 16 Feb 2011

Difficulty publishing documents.

For calculation publishing, homework assignments etc, it's difficult to show values along the way and display them.

  5 Comments

Jiro Doke
on 20 Feb 2011

You can publish function files (with M highlighting) since R2008a.

Ninetrees
on 22 Sep 2011

I have used Editpad Pro for all my text editing for years. It has a very powerful highlighting capability, and permits copying highlighted text as RTF. Fortunately, MATLAB's editor checks for updated files on disk promptly, so I don't usually have a delay when I save from EPP and swap to MATLAB. I use the GUI as my primary interface to MATLAB rather than the command line.

K E
on 25 Jul 2012

Hard to document equations (I use MathCad for this, but then it's a separate document from my code).


Jan Simon
Answer by Jan Simon
on 24 Feb 2011

Not concerning MATLAB, but MATLAB Answer:

The latency caused by the automatic preview drives me crazy. It frustrates me, that there is a function implemented already, which disables the auto-updates, but this function is called after a large number of charatcers only. It would be extremely easy to set this number to 1 in the source code. But it seems like TMW waits until the next monthly update to include such improvements. What a pitty.

  3 Comments

Jan Simon
on 24 Feb 2011

Ha. Solved: Create a short dummy answer at first. Reload the question page. Hit the "Edit" button before the page is completely loaded => A tiny inputbox opens in the top right corner on a blank page => without a preview window! Not nice, but not annoying anymore.

Zain Mecklai
on 29 Mar 2011

Just curious, what browser are you using?

Walter Roberson
on 29 Mar 2011

Firefox here. This situation is discussed in the "Matlab Answers Wish-list" topic.


Answer by Andy
on 18 May 2011

"It is cross platform, making code easy to share (assuming the other people have forked out for the not-so-cheap license)." This made me laugh. I have paid $100 for a student version of MATLAB. (I'm sure this is quite inexpensive compared to non-student versions of MATLAB, but that's $100 more than something like Python, and grad students do not typically have much in the way of extra money.) Now I can't buy the compiler toolbox. I can't pay for the privilege of taking the code I write on my desktop computer and using it on my netbook? I can't write an application to share with fellow students or professors? Users have a lot of other options for programming languages, and sharing your applications is a fundamental need for programmers that basically any of these other languages would satisfy. But TMW won't take my money for the same feature? I really think the compiler toolbox should be included in the base MATLAB installation, and since I know that won't happen any time soon (probably ever), I cannot understand why they wouldn't want my extra $30.

I also use MATLAB at work, where it is installed on a single computer while they decide if they want to shell out for more licences. I cannot recommend the compiler toolbox, builder EX toolbox, or spreadsheet link EX toolboxes to the company, because I cannot see the prices! TMW website won't show prices unless you give them all of your information in the first place. So I thought, "that's fine, they already have my information because I've already paid for their product". But since they see that I have a student account, I'm not allowed to even see the prices of other products that aren't available for the student version! Why on earth would they have this restriction?

In the end, MATLAB is neat. I love the IDE. I think the editor has features that are lacking from almost any other IDE in any other language. And the code generation/ease of use features for non-programmers are excellent. But given the amount that has to be spent to make use of your own code on more than one machine and the incredibly slow and under-featured GUI toolkit (that many others have already mentioned), Python + matplotlib seems like it's in my near future.