You are now following this channel
- You will see updates in your content feed.
- You may receive emails, depending on your notification preferences.
You are now following this topic
- You will see updates in your content feed.
- You may receive emails, depending on your notification preferences.
What should go in a next-generation MATLAB X?
Pin this topic?
This action will pin this post making it appear at the top of the recent discussion pages in the community.
Permanently delete this topic?
This cannot be undone.
Error Occurred
Unable to complete the action because of changes made to the page. Reload the page to see its updated state.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
- renderer performance gets significantly worse as a function of the figure/axes size on the monitor
- text() objects scale terribly and cause the axes to become very slow
- modern axes objects use "linger" mechanics that bog down performance (https://undocumentedmatlab.com/articles/improving-graphics-interactivity)
- patch and surface objects can become quite slow when interacting with them, particularly with a maximized figure
- uifigure performance is so bad (and worse on Linux vs. Windows) that we do not use it for anything except for the occasional geoglobe() plot
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
- counter += 1; salery *= 2 % operator assignment, or whatever it is called
- y = (x < 0) ? 3 : 2*x; % ternary operator
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
- A real, beautiful dark theme
- Improving the appearance of figures. Reduce padding around subplots, set default axis and tick mark color to black, adjust default linewidth and font sizes to be a bit larger. In general, try to make figures made quickly with default settings look better.
- Multi-start options for all solvers in the optimization/curve fit toolbox.
- Consistent arguments for plotting functions. I think some still use different capitalization schemes (like "LineWidth" vs "linewidth").
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
- a tutorial of using splitapply to take advantage of parallel computation.
- a tutorial of assignment and indexing involving comma-seprated list, cell array. It not only shows what works, but also explains what syntax would go wrong, and why it go wrong.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
- T(row,:); a single row table
- C = table2cell(T(row,:); a cell array
- C{:}; a comma-separated list.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
- Being dynamically typed makes large programs irritating to develop and makes the language slower (JIT needs some time to do its thing); I think a compiled statically typed MATLAB would be amazing (yes, I know the arguments block is a thing, but that's still checked at runtime)
- In-editor vim emulation (IdeaVim is the ideal case)
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
- dir() can return a struct array, like it does now
- dir() could hypothetically return a 2D cell array in which you "just had to know" which offset corresponded to which information. This would use more memory than a struct array and would be notably less user-friendly
- dir() could hypothetically return a table() of information. From a user experience perspective this might not have been a bad choice. But in practice, table() operations are slower than struct array operations. And in practice tables() were not introduced until R2013b, long after dir() had been designed
- dir() could hypothetically return an object array with a bunch of properties and methods. Comma seperated lists would probably end up being used internally, but I suppose could have been hidden from the user. In practice though, object operations are slower than struct operations.
Permanently delete this reply?
This cannot be undone.
- a string array of the absolute folder/filenames.
- the structure array.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
- I use the editor undocked. Please can we have the capability to display a watchlist of variables in a panel in the editor. Also, you should be able to right click on a watched variable and set a breakpoint to halt when the value changes or some user specified conditional relating to that variable is satisfied. Basically, please can we have the MS Visual Studio watchlist.
- The call stack display in the editor is absolutely useless if the call stack is deep, which it often is with OOP. Can't we have this as a proper list? Having to open and re-open a tiny dropdown menu is hopeless. The horizontal list that you get with the live editor is also useless if the stack is deep. It needs to be a list which you can pin open, and where you click on it to move the stack frame. I routinely resort to using dbstack at the command line to get round this, but then clicking the output from dbstack doesn't move the stack frame so it is only half useful. Also, because the output from dbstack moves off the screen when you enter other commands and has to be regenerated to stay up-to-date, it's hard to mentally "keep your finger in the pages of the book where you want to go back to" when you are concentrating hard.
- Finally, and this is a big ask I'm sure, can we have the capability to drag the instruction pointer during debugging and also modify code on the fly when debugging.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
- Confusion: I can't vistually tell if someObjectName(1,3) is a function call or index into an array.
- Muscle memory: In the other languates, indexing always uses [ ] , so I end frequently up typing the square brackets and creating syntax errors.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
- Haskell's guards and list comprehensions,
- Lazy containers,
- LISP keywords,
- LISP style maps, in which the :keyword-with-hyphens is also a function that retrieves data from an object,
- Python's convention of defining ```__str__(self)``` to mean "This is what happens when you cast to a string," ```__int___``` for "This is what happens when you cast to an int," etc. Optional methods that support every kind of cast you could want.
- More modern kinds of loops. ```for i in <arbitrary_container>``` for example. Whether the loop is executed in any particular order depends on whether the container has any kind of order, etc.
- An API for defining language extensions. This would allow the community to experiment with new language features, making it cheaper & easier for Mathworks to see which language features gain traction. Mathworks would always have the option to include the most popular language extensions in a future release.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.


Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
- such a thing could potentially make resource tracking easier
- there might be reason to warn about assigning between unlike data types. For example if A were uint8 but class B carried int8 then you might want a warning about negative values being truncated
- not sure what else...
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.


Permanently delete this reply?
This cannot be undone.

Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Too many input arguments.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
- Default everything to the 1st dimension (i.e. columns are default, not rows). Such as 1:3 should give [1 2 3].' and not [1 2 3].
- Then follow the dimensions in order (everything scales accordingly). In such way you can drop all those nd doppelgängers...
- Suppress the minumum of 2 dimensions and drop this 2D matrix "shortcut" (for instance repmat(1, 2) should give [1 1].' and not [1 1 ; 1 1]).
- Make the order of axes X, Y, Z not Y, X, Z as it is now for *some* functions, but not for others. In my humble opinion MATLAB should follow maths, not CRTs...
- do ... while ???
- Correspondence between MATLAB's online help and the "help" for each function. Formatted help for custom functions.
- utf-8 as standard.
- Easier and possibly native handling of large constant datasets in parallel working (parallel.pool.constant().... really?).
- Ability to assign different GPUs to different workers.
- Type check for variables? So much time could be spared when the compiler can check and warn about what you are feeding a function... but there are pros and cons.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.

Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
- get rid of semicolons to suppress output, and
- make element-wise operations the default, rather than having to specify .*, ./, and .^ for the operation that most people want to do most of the time.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
- auto-complete options on inputs to custom functions
- specified type of arguments such that if an argument is supposed to be a filename or path, then it would allow you to autocomplete a path the way imread() and dir() do, but for custom functions
- keyword arguments (is that already a thing?) like in python, instead of all arguments being "equal" and having to parse out
- functional programming features such as in-line loops, if statements, direct indexing into function outputs (without an intermediate variable explicitly created).
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
- Darktheme
- Standart font with distinguishable lI1, 0O etc. (eg. FiraCode, Input)
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
- Everything is an object all the time.
- Every operation is through message passing.
- Environment is running and alive all the time.
- Run everywhere, Inspect everywhere, Debug everywhere, Edit everywhere.
- Entire environment object is saved to disk for fast reload.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
- All the workspaces on the M-code function call stack, and the contents of all variables in them.
- The state of the call stack, including what function is being executed, and where the execution pointer is in each frame.
- Contents of all persistent variables in all functions and methods, and all Constant properties in all loaded classes.
- Matlab’s low-level IO is unified with C, Live file handles are represented by ints which disconnected my refer to OS-level resources managed in the C standard library or the like.
- External Interfaces to embedded Java, C/C++, .NET, or Python code.
- Network socket state.
- Etc.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
- the last index associated with the inner x?
- the index after the last one associated with the inner x?
- the index associated with the outer x?
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
- If any destination array being indexed with #var or # did not already exist and MATLAB can deduce the number of elements involved, then MATLAB pre-allocates the array
- MATLAB keeps track of the highest location written to, per dimension
- After the loop, if MATLAB pre-allocated, then it also truncates per-dimension according to the highest written into
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
- The fieldnames function returns a string row vector, not a cellstr column vector, so you can loop over cell fields with for fld = fieldnames(s) instead of for fld = string(fieldnames(s)'), which is uglier.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
- Start indexing from 0
- Redo package system
- Improve the class system
- Improve language a bit (like value += delta)
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.




Permanently delete this reply?
This cannot be undone.
- Matlab: "x(1) is the first element of x"
- C: "x[0] is the contents found 0 elemtens behind the pointer x"
- Say it loud until you feel it. If you can feel it, it is programming, and not a crossword puzzle anymore.
- German: DAS Auto (neutrum)
- French: LA voiture (femininum)
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.
Permanently delete this reply?
This cannot be undone.