## What frustrates you about MATLAB?

### Oliver Woodford (view profile)

on 16 Feb 2011
Latest activity Commented on by Walter Roberson

### Walter Roberson (view profile)

on 2 Jul 2016 at 3:59

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.

Tim Bigelow

### Tim Bigelow (view profile)

on 23 Jun 2016

the variable page is useless! How much does this software cost? Has nobody else figured out such simple stuff is non-functional?

Cant enter new numbers Can't enter more columns in the column number entry area

Can't copy and paste in cells

When numbers are entered manually, they are justified left or right?

why not all the same?

why do i have to enter two returns just to get one return in this suggestion page?

Stephen Cobeldick

### Stephen Cobeldick (view profile)

on 23 Jun 2016

@Tim Bigelow: What do you mean by the "variable page" This is not mentioned anywhere in the online documentation.

Do you mean the Variable Viewer, which as its name implies, is intended for viewing summaries of variables in the workspace?

Walter Roberson

on 23 Jun 2016

## Products

### Oliver Woodford (view profile)

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.

Steven

### Steven (view profile)

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

### Oliver Woodford (view profile)

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

### Oliver Woodford (view profile)

on 13 Apr 2015

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

### Ian (view profile)

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.

Oliver Woodford

### Oliver Woodford (view profile)

on 13 Apr 2015

The App Designer will hopefully improve things.

Robert Cumming

### Robert Cumming (view profile)

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.

Michelle Hirsch

### Michelle Hirsch (view profile)

on 31 Aug 2015

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.

### Oliver Woodford (view profile)

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.

Walter Roberson

### Walter Roberson (view profile)

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

### Steven (view profile)

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

Michelle Hirsch

### Michelle Hirsch (view profile)

on 31 Aug 2015

MATLAB Student and MATLAB Home are great affordable ways to get personal licenses of MATLAB. MATLAB Student now starts at 49 (US). MathWorks is offering an increasing number of license options for academic and professional use, so it can be worth checking in to see if MATLAB might be more affordable than you may have thought. ### David Young (view profile) Answer by David Young ### David Young (view profile) 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 Shub ### Daniel Shub (view profile) 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 ### David Young (view profile) on 28 Sep 2011 Daniel: indeed! SK ### SK (view profile) 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 (view profile) Answer by Jan Simon ### Jan Simon (view profile) 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. #### 5 Comments dpb ### dpb (view profile) on 24 Mar 2015 But why should one have to is the point... Royi Avital ### Royi Avital (view profile) on 10 Aug 2015 Is it any better with the latest versions? Walter Roberson ### Walter Roberson (view profile) on 10 Aug 2015 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. ### Oliver Woodford (view profile) Answer by Oliver Woodford ### Oliver Woodford (view profile) 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 ### Oliver Woodford (view profile) on 22 Nov 2013 Happily, this is becoming less true with every release, on Windows at least. Wyken Seagrave ### Wyken Seagrave (view profile) 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! ### Robert Cumming (view profile) Answer by Robert Cumming ### Robert Cumming (view profile) 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 ### Dan (view profile) 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". ### Sean (view profile) Answer by Sean ### Sean (view profile) on 27 Sep 2011 I would love to just write x++; instead of x = x + 1; #### 4 Comments Jan Simon ### Jan Simon (view profile) 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 ### Wilfred (view profile) on 16 Nov 2011 Funny, in Simulink Stateflow (action language) this is already possible. Andrew Reibold ### Andrew Reibold (view profile) on 26 Sep 2014 If this is your biggest issue with the software, I'm very happy for you :) ### Ian (view profile) Answer by Ian ### Ian (view profile) 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 ### Val Schmidt (view profile) 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 ### Walter Roberson (view profile) 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 ### Curtis (view profile) 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. ### tom 1line=1bug (view profile) Answer by tom 1line=1bug ### tom 1line=1bug (view profile) 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 ### Oliver Woodford (view profile) on 28 Sep 2011 Commoditization is an excellent point. It should be an answer by itself. ### Richard Finley (view profile) Answer by Richard Finley ### Richard Finley (view profile) 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 Jan Simon ### Jan Simon (view profile) 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 ### Mike (view profile) 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 ### Mace (view profile) 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. ### Royi Avital (view profile) Answer by Royi Avital ### Royi Avital (view profile) 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 ### Jan Simon (view profile) on 30 Mar 2011 And the editor needs a block selection. ### Knut (view profile) Answer by Knut ### Knut (view profile) 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 ### Patrick (view profile) Answer by Patrick ### Patrick (view profile) 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 ### K E (view profile) on 25 Jul 2012 Also, quality of copied figures is poor (blurry lines/text) and requires workarounds like export_fig . ### Chad Greene (view profile) Answer by Chad Greene ### Chad Greene (view profile) 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. #### 9 Comments Cedric Wannaz ### Cedric Wannaz (view profile) on 3 Aug 2015 "Alternatively, Matlab could simply adopt my default settings as its default settings for everyone." Chance is that we all have the same kind of settings-fine-tuning-mania, which makes us highly incompatible on that matter. Plus I don't like this pink "handwriting" font that you are using :-p Sean de Wolski ### Sean de Wolski (view profile) on 3 Aug 2015 Cedric, this discussion never took off but you can already see that only my settings should be everyone's defaults :) http://www.mathworks.com/matlabcentral/answers/10515-desktop-layout It might be nice though to have multiple options beside the default that you could pick in the layouts tab. Cedric Wannaz ### Cedric Wannaz (view profile) on 3 Aug 2015 :-D well, if it takes off, it will probably converge towards nothing (which, in some sense, is more painful than diverging), exactly like those threads titled "What is best, PC or Mac?". Well, now that I read you argument about Macs hiding windows, I see that there may be some underlying correlation ;-) I am strongly for undocking the editor by the way and for minimizing everything else so we have only the command window and nothing else. The vast empty white remaining area can then marvelously stimulate our creativity .. until the first error message strikes .. . This is exactly why I'd push for disabling errors in the default setup! PS: ok, I though about it and the best option is to set the error messages color to white. This makes the whole thing more peaceful, without altering the functioning: ### Chad Greene (view profile) Answer by Chad Greene ### Chad Greene (view profile) 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. #### 2 Comments Guillaume ### Guillaume (view profile) 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 ### Chad Greene (view profile) 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. ### David Young (view profile) Answer by David Young ### David Young (view profile) 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 ### Chad Greene (view profile) 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 ### per isakson (view profile) 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 ### David Young (view profile) on 13 May 2015 Thank you per, I shall look at it. (I'd still TMW to improve what they provide, of course.) ### Jan Simon (view profile) Answer by Jan Simon ### Jan Simon (view profile) 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 ### David Young (view profile) Answer by David Young ### David Young (view profile) 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 Walter Roberson ### Walter Roberson (view profile) 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 ### Bjorn Gustavsson (view profile) 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. Rob Comer ### Rob Comer (view profile) on 21 May 2016 In R2015b and later, deg2rad and rad2deg are part of MATLAB itself. ### Sean de Wolski (view profile) Answer by Sean de Wolski ### Sean de Wolski (view profile) on 31 Mar 2011 Mesh doesn't accept class 'single' inputs. #### 0 Comments ### Pierre (view profile) Answer by Pierre ### Pierre (view profile) 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 ### Bjorn Gustavsson (view profile) Answer by Bjorn Gustavsson ### Bjorn Gustavsson (view profile) 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 ### Jan Simon (view profile) on 22 Sep 2011 I hope you've sent a report to the technical support team mentioning the Matlab and OS version. Sean ### Sean (view profile) on 27 Sep 2011 Happens to me too sometimes. ### Eric Keller (view profile) Answer by Eric Keller ### Eric Keller (view profile) 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 ### Walter Roberson (view profile) on 9 Feb 2012 And when it breaks down or starts to annoy Or grinds when it moves And gives you no joy ... ### Charles Harrison (view profile) Answer by Charles Harrison ### Charles Harrison (view profile) 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 ### Walter Roberson (view profile) 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? ### Csaba (view profile) Answer by Csaba ### Csaba (view profile) 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 ### Image Analyst (view profile) 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. ### SK (view profile) Answer by SK ### SK (view profile) on 30 Apr 2014 Edited by SK ### SK (view profile) 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 ### Marco (view profile) Answer by Marco ### Marco (view profile) 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 Michelle Hirsch ### Michelle Hirsch (view profile) on 31 Aug 2015 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. ### Matt J (view profile) Answer by Matt J ### Matt J (view profile) 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 Kenneth Lamury ### Kenneth Lamury (view profile) on 2 Jul 2016 at 1:56 [1:8] gives a row matrix {1:8]' gives a column matrix version student R2016a Walter Roberson ### Walter Roberson (view profile) on 2 Jul 2016 at 3:59 Matt would like to be able to use 1:3.'  to get the column vector. ### Paul (view profile) Answer by Paul ### Paul (view profile) 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 ### Guillaume (view profile) 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. ### Oliver Woodford (view profile) Answer by Oliver Woodford ### Oliver Woodford (view profile) 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 ### Oliver Woodford (view profile) 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 ### Royi Avital (view profile) on 28 May 2011 I hope it doesn't do what you described. If it does, They need to optimize it fast. Oliver Woodford ### Oliver Woodford (view profile) 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! ### Jan Simon (view profile) Answer by Jan Simon ### Jan Simon (view profile) 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 ### James Tursa (view profile) 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 ### Jan Simon (view profile) 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 ### Stephanie (view profile) 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. ### Matt Tearle (view profile) Answer by Matt Tearle ### Matt Tearle (view profile) 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 ### Teja Muppirala (view profile) 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 ### Walter Roberson (view profile) on 28 Mar 2011 The strvcat() step adds spaces to short lines, and the mat2cell is going to preserve those introduced spaces. ### per isakson (view profile) Answer by per isakson ### per isakson (view profile) 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 ### Walter Roberson (view profile) Answer by Walter Roberson ### Walter Roberson (view profile) on 28 Mar 2011 Schedule keeps slipping on the DWIM (Do What I Mean) toolbox. #### 2 Comments Matt Fig ### Matt Fig (view profile) on 28 Mar 2011 And that's the one that could send the entire MW development team to Geneva! Star Strider ### Star Strider (view profile) 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. ### Aleksander (view profile) Answer by Aleksander ### Aleksander (view profile) 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 ### K E (view profile) 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). ### Sean de Wolski (view profile) Answer by Sean de Wolski ### Sean de Wolski (view profile) 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 ### Bjorn Gustavsson (view profile) Answer by Bjorn Gustavsson ### Bjorn Gustavsson (view profile) on 27 May 2011 That contour effects the clim range! I've used something along these lines: pcolor(x,y,z1) hold on contour(x,y,z2,8,'w')  Just to see if the shape/location in z2 aligned with those in z1. Since matlab7 I had to use the 'v6' flag. Now I'm gently told that functionality is going out. So I guess I'd have to track every "contour('v6'" in all my code and replace it with something along the lines of: pcolor(x,y,z1) hold on cX = caxis; contour(x,y,z2,8,'w') caxis(cX)  Which I find uglier and clunkier. Or I could shadow contour with my own wrapper where z2 is scaled to cX if there is a colour argument. But I prefer to avoid shading the mathwork's functions. #### 0 Comments ### Guy (view profile) Answer by Guy ### Guy (view profile) 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. #### 1 Comment Michelle Hirsch ### Michelle Hirsch (view profile) on 31 Aug 2015 R2014a introduced a rich pop-up command history into the command window. This supports searching, running multiple commands, and seeing which commands generated errors. There's a brief video here: Pop-up Command History ### Eric Keller (view profile) Answer by Eric Keller ### Eric Keller (view profile) 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 ### Walter Roberson (view profile) on 31 Jan 2012 What kind of features would you envision in a "source code browser" ? Walter Roberson ### Walter Roberson (view profile) on 31 Jan 2012 Should this perhaps be over in http://www.mathworks.com/matlabcentral/answers/1325-what-is-missing-from-matlab ? Jan Simon ### Jan Simon (view profile) 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. ### Yash (view profile) Answer by Yash ### Yash (view profile) on 25 Jul 2012 the constant version change and the no support for previous version commands #### 4 Comments Image Analyst ### Image Analyst (view profile) 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 Shub ### Daniel Shub (view profile) 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 ### Oliver Woodford (view profile) 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. ### Matthew (view profile) Answer by Matthew ### Matthew (view profile) 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 ### Sean de Wolski (view profile) on 27 Feb 2013 Could you explain how? ### Krzysztof (view profile) Answer by Krzysztof ### Krzysztof (view profile) 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 ### Sean de Wolski (view profile) 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 ### Krzysztof (view profile) 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 Shub ### Daniel Shub (view profile) 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. ### SK (view profile) Answer by SK ### SK (view profile) 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 ### SK (view profile) Answer by SK ### SK (view profile) 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 ### SK (view profile) Answer by SK ### SK (view profile) 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 ### SK (view profile) Answer by SK ### SK (view profile) 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 ### Guillaume (view profile) Answer by Guillaume ### Guillaume (view profile) 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 ### Titus Edelhofer (view profile) 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 ### Guillaume (view profile) 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. ### Michael Haderlein (view profile) Answer by Michael Haderlein ### Michael Haderlein (view profile) 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 ### Image Analyst (view profile) 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 ### Star Strider (view profile) on 14 Feb 2015 Isn’t that what interns are for? ;-) per isakson ### per isakson (view profile) 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. ### John (view profile) Answer by John ### John (view profile) on 20 Feb 2015 Edited by John ### John (view profile) 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 ### Royi Avital (view profile) Answer by Royi Avital ### Royi Avital (view profile) 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 ### Chad Greene (view profile) Answer by Chad Greene ### Chad Greene (view profile) 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);  #### 3 Comments Sean de Wolski ### Sean de Wolski (view profile) 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 ### Chad Greene (view profile) on 25 Mar 2015 Very cool! Royi Avital ### Royi Avital (view profile) on 10 Aug 2015 This is great! ### Bjorn Gustavsson (view profile) Answer by Bjorn Gustavsson ### Bjorn Gustavsson (view profile) on 30 Apr 2015 That a call to contour where one specifies a single colour for the contour-lines still modifies the clims of the figure is frustrating and stupid. By specifying one colour for all contour-lines it is explicitly stated that the colour of the contour-lines will not be used to give information about the levels... imagesc(peaks(512)) hold on caxis contour(fliplr(peaks(512))+500,10,'k') caxis  I made a bug report/enhancement request that was closed without action twice... #### 1 Comment Steven Lord ### Steven Lord (view profile) on 1 Jul 2015 As a workaround, set the axes CLimMode property to 'manual'.  h = imagesc(peaks(512)); ax = ancestor(h, 'axes'); hold on caxis(ax) ax.CLimMode = 'manual'; contour(fliplr(peaks(512))+500,10,'k') caxis(ax) ### Matt J (view profile) Answer by Matt J ### Matt J (view profile) on 4 Aug 2015 The inability to programmatically make parfor reduce to an ordinary for-loop. This is useful as a fallback for MATLAB installations lacking the Parallel Computing Toolbox. As it stands now, you have to code a separate for-loop, if you want to do so. It seems natural that this should do it:  parfor (i=1:N,0) .... end but this does not run with the same efficiency as  for i=1:N .... end #### 2 Comments Sean de Wolski ### Sean de Wolski (view profile) on 4 Aug 2015 Matt, what performance degradations are you seeing? I'm seeing negligible amounts for a run of 10000 iterations in overhead. function timeforparfor  tic parfor (ii=1:10000,0) svd(rand(20)); end toc tic for ii=1:10000 svd(rand(20)); end toc  Matt J ### Matt J (view profile) on 4 Aug 2015 That's encouraging, Sean. I guess my test example below used too small an N. For N>=1e5, I do see comparable performance.  N=1e4;  tic parfor (i=1:N,0) sin(i); end toc  tic for i=1:N sin(i); end toc I still find it curious, though, that the two are not precisely equivalent for all N. ### Mace (view profile) Answer by Mace ### Mace (view profile) on 7 Oct 2015 I recently started using mac. Extremely annoying is lag when scrolling in editor, I think it's mostly with "more space" setting of the display and full screen editor. Several fast scrolls up and down lasting fraction of a second take few seconds to display on the screen. Another issue on mac is broken text copying from help. Apparently it's broken at least 1.5 years and still not fixed. #### 1 Comment Chad Greene ### Chad Greene (view profile) on 7 Oct 2015 Yes, copying from the documentation is quite frustrating on a Mac! ### Simon Parten (view profile) Answer by Simon Parten ### Simon Parten (view profile) on 25 Jan 2016 #### 0 Comments ### Robert Cumming (view profile) Answer by Robert Cumming ### Robert Cumming (view profile) on 16 Feb 2011 removal of working version (from 6.5 onwards) on HPUX. #### 0 Comments ### Sean de Wolski (view profile) Answer by Sean de Wolski ### Sean de Wolski (view profile) 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. #### 6 Comments Ninetrees ### Ninetrees (view profile) 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 ### K E (view profile) on 25 Jul 2012 Hard to document equations (I use MathCad for this, but then it's a separate document from my code). Kenneth Lamury ### Kenneth Lamury (view profile) on 2 Jul 2016 at 2:49 I think you need to learn the 'annotation' function to print out your equations. For example T=annotation('textbox',[.61, .285, .22, .1],'String','$$\int_{y1(x)}^{y2(x)}{f(x,y)} \d{dx}\d{dy}$$','BackgroundColor',[1,.5,.5], 'Interpreter','latex'). ### Jan Simon (view profile) Answer by Jan Simon ### Jan Simon (view profile) 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 ### Jan Simon (view profile) 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 ### Zain Mecklai (view profile) on 29 Mar 2011 Just curious, what browser are you using? Walter Roberson ### Walter Roberson (view profile) on 29 Mar 2011 Firefox here. This situation is discussed in the "Matlab Answers Wish-list" topic. ### Andy (view profile) Answer by Andy ### Andy (view profile) 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 paid100 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.

Andrew Newell

### Andrew Newell (view profile)

on 18 May 2011

I agree that there is no point in their being so secretive about prices. Why not just post price tables on their web site?

Walter Roberson

### Walter Roberson (view profile)

on 18 May 2011

They have a pricing plan: $US7100 gets you the compiler and base MATLAB together, with a right to distribute to as many people as you like for however much you want to charge them. Your counter-proposal is for a price much less than$100 per person.

This topic reminds me of Harlan Ellison's "Pay The Writer" essay, available on YouTube. (Caution: strong language.)

Andrew Newell

### Andrew Newell (view profile)

on 18 May 2011

Anything written by Harlan Ellison should be approached cautiously.

### Arthur (view profile)

on 30 Aug 2011

In the spirit of "do what I mean" while testing functions, the command history is oblivious to context. Frequently I'll start my tests ("runtests"), stop at a breakpoint and examine some variables ("look.at.this.object"), then kill the function and need to restart the test. In this situation, [up] [enter] does exactly what I said (repeat last command entered), but never what I want (repeat last command in this scope: "runtests").

Whatever I did while stopped in the debugger is completely meaningless in the base workspace. The command history would border on reading my mind if it followed which workspace commands were issued in.

Walter Roberson

### Walter Roberson (view profile)

on 30 Aug 2011

If you have variable names being passed down using the same dummy variable names, or if both routines use the same global variables, then you might have good reason to want to repeat the same command in different contexts. The same goes if you are using shared variables.

### Derek O'Connor (view profile)

on 12 Sep 2011

At Walter Roberson's request I'm reposting this answer here.

Boredom Forecast: High(78/100). Discussion of Syntax.

First, get the preferred indentation by using "smart indent" in the Matlab Editor.

 for t = 1:1:26
if 0<t<=4
x1d(t) = 0.5*t;
x2d(t) = 0.5*t;
elseif 4 < t && t <= 7.
x1d(t) = 0.5*t;
x2d(t) = 3.33;
elseif 7<t<=10
x1d(t) = 0.5*t;
x2d(t) = 10/3 - 0.5*(t-40/3);
elseif 10<t<=26
x1d(t) = 0.5*t;
x2d(t) = 0;
end
end

Second, as Paulo Silva points out, compound logical expressions, such as 4 < t <= 7 are not allowed in Matlab, Fortran, Pascal, ..., etc. Instead you have to write (for the convenience of the compiler-interpreter (writer)), 4 < t && t <= 7.

Count yourself lucky. In some languages you would have to write if 4 < t && (t < 7 | t = 7) etc.

This logical expression would take an eagle-eyed programmer anywhere from 10 mins to a day to check for errors (precedence rules for && versus |, etc.).

This is crazy. Any compiler-interpreter that rejects 4 < t <= 7 is doing so for purely lexical-syntactical convenience. This is not a code generation problem. Most 1st or 2nd-year computer science students could write a (character-by-character) program that would translate 4 < t <= 7 into 4 < t && t <= 7.

For me, the key to Matlab's success, and what attracted me, was the important syntactical innovation by Cleve Moler: a notation that made it easy to translate statements in Linear Algebra into a programming language. This is what IBM's Jim Backus tried to do with the FORTRAN (FORmula TRANslation) (56?) compiler. He succeeded, despite the sceptics, and Cleve Moler succeeded, despite the sceptics, to produce programming languages that are widely used in scientific computing.

So, in typical Irish fashion, I will answer your question with a question:

Why can't Matlab, etc., recognize the simple statement if 4 < t <= 7

Derek O'Connor.

PS: Another question: why is it so difficult to write anything but plain text on this site? I had to write | for the double |, which kept disappearing.

Anybody for Stack Exchange?

PPS: Yes, yes: we know how to get rid of all the elseif's

Derek O'Connor

### Derek O'Connor (view profile)

on 16 Sep 2011

@Jan, Walter

First we had straw men. Now we have red herrings:

>> for t = 3:8, if (4<t<=7),disp(['In Range']),else disp(['Out Range']),end, end

In Range In Range In Range In Range In Range In Range

>> for t = 3:8, if (4<t) && (t<=7),disp(['In Range']),else disp(['Out Range']),end, end

Out Range Out Range In Range In Range In Range Out Range

I can see that this discussion is leading nowhere, so let's end it
by agreeing to disagree.

Walter Roberson

### Walter Roberson (view profile)

on 27 Sep 2011

Can we not at the very least have it as an axiom that introducing new syntactic sugar should not lead to errors in valid existing code?

Jan Simon

### Jan Simon (view profile)

on 27 Sep 2011

@Walter: TMW follows this idea. At least usually. Some releases ago this was valid to reference a field of a struct directly after the function has return: "fcn(in).field". Now you need: "tmp = fcn(in), tmp.field". So I would not call it an axiom.

### Ninetrees (view profile)

on 22 Sep 2011

MATLAB assignment (a = 1) statements must be terminated with a ; to suppress output, but the 'natural' case is to NOT want output, in all but the simplest code segments (for me). As a result, my MATLAB code is cluttered with ;s, and I have the extra hassle of having to remember to put them everywhere. It seems that many have asked for this to be changed, but Mathworks has declined. I opine that it would an easy matter to allow either syntax via an inline flag or a global setting so that users have a choice. Then one could either change a setting in Preferences or add a line to one's code such as SemicolonOutputs=1 or SemicolonSuppresse=1. Dunno why it is so hard to convince Mathworks of that. I like the feature of being able to display results so easily without constructing a print statement, so I don't want the option to go completely away. ~R~

Daniel Shub

### Daniel Shub (view profile)

on 28 Sep 2011

If TMW were starting from scratch, it might make sense to drop the semicolon, but I cannot see a reason to drop it now. I think the flag idea is really bad since it would introduce so many compatibility issues when sharing and reusing code.

I do wish mlint would give a warning for all lines that are not terminated with a semicolon: For example

x = 1:10
x
plot(x)

the plot function does not produce an mlint warning. This could cause nightmares if plot was changed to always return the handle.

@Walter, you can use commas to separate multiple commands on the same line (of course you get the output of each command).

Walter Roberson

### Walter Roberson (view profile)

on 28 Sep 2011

According to an Answer from someone at Mathworks, the current version of timer interrupts can interrupt between any two lines -- which in turn means that if you have any critical code on a single processor or which is not protected by semaphores on multiple processors, then you should put the code on one line (and of course that code shouldn't call upon any toolboxes or .m or .p coded routines...)

dpb

### dpb (view profile)

on 24 Mar 2015

I think there are places where multiple statements/line are more clear than not...a particular one is

for ix=...
if condition, continue, end


### MIchael (view profile)

on 11 Nov 2011

Fast simulation with S-Functions written in C. Speeding up simulation (e.g. in Accelerator mode) requires TLC files (at least wrapping). M-language requires full inlining (more TLC coding).

I haven't found any other way to enable rapid simulation with S-Functions and I don't want to code everything with Simulink Blocks (prefer S-Functions).

Maybe someone has a comment/hint on this?

Thijs

### Thijs (view profile)

on 21 Nov 2011

Once wrote a function to convert an arbitrary mathematical function into a simulink block diagram. Maybe thats something for you?

MIchael

### MIchael (view profile)

on 7 Dec 2011

You mean putting Math Function and other blocks together?
This is what I actually don't like. My model is quite big, and I prefer writing it in M-Language (that's why S-Functions).

Titus Edelhofer

on 1 Jan 2012

Hi Michael,

Titus

### Chris Ryan (view profile)

on 1 Jan 2012

what frustrates me in MATLAB is how to make a graphic with continuous data which has two boundary conditions as a result from the previous formula. for an example

Lp=A+B;
Lr=C+D; % these are the boundary conditions
for Lb = 1:1:30 % this is the continuous data
if 0<Lb<=Lp
Mn(Lb) = E*F;
elseif Lp < Lb && Lb <= Lr.
Mn(Lb) = 0.5*((Lb-Lp)/(Lr-Lp))+F;
elseif Lb>Lr
Mn(Lb) = (Lb/3)^2 - (sqrt(Lb/G));
end
end
plot(Lb,Mn)


what i wanted to make is that program running from the first condition to another. when the program is running the data until the first boundary condition, the data calculation must change into the second formula and so on. but if i use that script it didn't run like what i've wanted to be. what should i do to solve this kind of problems? thank you so much..