What frustrates you about MATLAB? #2

164 views (last 30 days)
Rik
Rik on 28 Jun 2020
Commented: TV on 4 May 2023 at 20:08
Similar to what has happened with the wishlist threads (#1 #2 #3 #4 #5), the "what frustrates you about MATLAB" thread has become very large. This makes navigation difficult and increases page load times.
So here is the follow-up page.
What should you post where?
Wishlist threads (#1 #2 #3 #4 #5): bugs and feature requests for Matlab Answers
Frustation threads (#1 #2): frustations about usage and capabilities of Matlab itself
Missing feature threads (#1 #2): features that you whish Matlab would have had
Next Gen threads (#1): features that would break compatibility with previous versions, but would be nice to have
@anyone posting a new thread when the last one gets too large (about 50 answers seems a reasonable limit per thread), please update this list in all last threads. (if you don't have editing privileges, just post a comment asking someone to do the edit)
  9 Comments
Robert
Robert on 3 Nov 2021
I want to bump up the need for better GNU compiler support for FORTRAN on all platforms.

Sign in to comment.

Answers (48)

Zoltán Csáti
Zoltán Csáti on 7 Aug 2020
Before I started using Python this year, I was a happy MATLAB user. I still like MATLAB because I am efficient in it, but here are some things I don't like about it. I will sometimes refer to Python because that's what I have experience with. I do not indend to start a flame war, especially because I see the merits in both languages.
  1. The community. There are some heavyweight MATLAB users (Walter Roberson, Image Analyst, John D'Errico, Jan, and I'm sure I missed many of you) who have immense knowledge and are also very active on MATLAB Answers. However, the forum is full of people whose posts do not show any research work. They expect complete solutions without showing any effort. When Python users raise issues on GitHub/Gitlab, etc., I don't have this feeling. Related: I also feel that the open-source nature of Python produces quality contributors.
  2. Lack of momentum. There are too many awesome projects that stop because the maintainer a) lost interest or b) left the university and has no access to MATLAB any more. Being closed-source really hampers the development.
  3. Ecosystem. I can only talk about areas I experienced, but Python (and now Julia) has such an extensive ecosystem and an active and responsive community, that one does not have to start reimplementing everything. MATLAB toolboxes sometimes provide a solution but university clusters often miss many toolboxes.
  4. Editor. The MATLAB Editor (the classical one, not the Live Editor) is useful but misses some features that others have. As if the MATLAB linter was available for other editors too!
  5. OOP. Reading the threads, people criticize the OOP syntax of MATLAB. To me, it is not a problem (Python also explicitly needs the instance as the first method parameter), but custom types are really slow in MATLAB. I would love to have (nearly) costless abstraction as in Julia or in C++; it happened to be that because of speed issues I had to sacrifice readability and turn to built-in types to achieve reasonable speed.
  6. Lack of efficient data structures. Complex problems require fast hash maps, linked lists and other data structures.
  7. Parallelism. The fact that open source tools support many levels of parallelism and MATLAB offers it in a toolbox is a big drawback. Moreover, launching parallel pools open new MATLAB workers that spend about 700 MB each! I didn't see any efficient massively parallel applications done by MATLAB.
  8. Invoking C code, let alone C++, is difficult with the MEX interface. The really powerful MEX commands (see on UndocumentedMATLAB) are not documented and change all the time. You also cannot debug MEX code with MATLAB Editor.
  9. To generate standalone application, you need an additional toolbox. Moreover, the MATLAB runtime is huge, so for a simple application, you have to download hundreds of megabytes. The startup time is also very slow.
  10. TMW's focus on shiny features and the toolboxes. The core numerical algorithms changed very little in the past 20 years. To me, MATLAB's focus should be on computational mathematics (as it originally was) and not polishing the IDE and other secondary issues. Yes, they are important, but supporting tensor operations, introducing state-of-the-art ODE solvers (as Julia's wonderful DifferentialEquations.jl) would be more useful for a scientist. I would just highlight git support. If someone has to solve complex git-related tasks, they will use a feature-rich editor (such as SmartGit) or will use the command line. What I want to point out is that TMW spends its workforce on implementing many things into MATLAB that simply cannot compete with specialized tools (diff tools, git support, etc.). If they concentrated on the core of MATLAB (things that are unrelated to the IDE), all people could profit from it. I saw the tendency that computational scientists use MATLAB less and less because they need the features that other languages' rich ecosystems provide. Honestly, I am deeply disappointed that TMW tries to satisfy novice engineers instead of providing powerful tools. You are losing hardcore programmers and scientists this way (cf. points 1-3). I follow the release notes and bitterly recognize that in the last decade, almost no improvement was made for the core. Just the superficial features... Sigh...
I didn't write about the merits of MATLAB (there are plenty) because the question was about the negative aspects. My heart breaks to see how MATLAB fails to catch up with the state-of-the-art of computational science.
  8 Comments
cui
cui on 26 Jun 2022
On the other hand, maltlab is both a software and a language. At the level of software tools, it has to provide as much convenience and ease of use as possible for all kinds of users, and at the level of language features, it has to provide flexibility and efficiency for all kinds of users. So it cannot be compared to a language (python/julia), nor to a professional tool (git tools, vs IDE,...). matlab is the best combination between software and language, and I have never seen any tool in the open source community in the last 20 years that fits together so well.

Sign in to comment.


John D'Errico
John D'Errico on 28 Jun 2020
Edited: John D'Errico on 28 Jun 2020
That the mind reading toolbox has never become available for general use? ;-)
Truly, that scares me just a bit if it ever truly became a reality, so not a real frustration.
So what frustrates me? As new capabilities are introduced into new releases, we find that the old tools stay around. This is necessary for backwards capability. And backwards capability is one of the things that makes MATLAB truly great, that I have nearly 35 year old code that still runs. But that leaves us with bloat, in the sense that we now have multiple tools with similar capability. New users find more stuff to learn. The result is a language that is not as clean, not as easy to use as I want.
For example, we have both strfind and findstr. If you read the help for findstr...
findstr is not recommended. Use CONTAINS or STRFIND instead.
But findstr remains in our universe. One day it might disappear. But when you want to use a code to do that, does anybody really remember which of findstr or strfind they SHOULD use? Which is the recommended code, which is deprecated?
I can offer other examples. We have delaunay, delaunayn, delaunayTriangulation, and triangulation. We even have alphaShape, which can be made to produce a delaunay triangulation if you know how to use it. But not all of those tools are truly compatible with each other. What are the differences? Sigh.
How about interpolation? There is the interp1/interp2/interp3/interpn family. But then we have griddedInterpolant. A different tool. Not compatible with the others. And griddedInterpolant requires an ndgrid call to use it, whereas the others rely on meshgrid. Sigh. While I prefer ndgrid to meshgrid because of the x/y inversion issue when you go to n dimensions that surely confuses people, but this difference will surely cause problems.
Likewise, for scattered interpolation, we have griddata. But then we have griddatan. We have scatteredInterpolant. And as confusing, there is no griddata3. griddata works in 2 or 3 dimensions. So they do similar things, but new users then need to learn about 3 tools.
There are other examples. For example, some toolboxes introduce capabilities that already exist in MATLAB. So if you have the correct toolbox, then you get a tool that replicates functionality that already exists. Yes, the new tool in that toolbox probably adds some new feature the author thought was useful. But again you have a source of confusion, especially a problem for newer users. An example of this is xcorr versus crosscorr. You get one from a toolbox.
Yes. I understand the reason for the various tools. But the result ends up as bloat. If I want to do X, then there should be a direct way to do X, ONE way. Not 10 ways, all of which have subtly different interfaces.
Is any of this really a major problem? Well, no. You learn how to use what solves your problem. And gradually, you learn about the alternatives.
I still love to use MATLAB. I just wish it were slightly more perfect.
  8 Comments
Sindar
Sindar on 19 Aug 2020
One related thing that I noticed recently is some stuff with the documentation search:
Great: "not recommended; use histogram instead" is right there
not-so-great: histogram is not one of the top results
Is there a way to boost the listing of common & current functions?

Sign in to comment.


Andres
Andres on 6 Jul 2020
The year is 2020, and although Matlab may do a good job with autoparallelization, I find it frustrating that parfor, parsim etc. are still reserved to an extra toolbox. Parallel computing is just state of the art today.
Considering the competition, I think it would be a smart move to include at least some limited features of the Parallel Computing Toolbox into plain Matlab/Simulink. This could even promote the toolbox to plain Matlab users.
  4 Comments

Sign in to comment.


Rik
Rik on 15 Jan 2021
Sometimes things are on the edge of being documented or are almost a bug. An example:
It is relatively common knowledge under Matlab veterans (at least those I see posting on Answers) that the legacy syntax for cellfun is much faster than providing a function handle (which is faster than providing an anonymous function).
c=cell(20,30);c(randperm(end,end/4))={rand};%generate some data
timeit(@()lega(c));% the run feature might return an inconsistent timing, this should help
t=[timeit(@()lega(c)) timeit(@()hand(c)) timeit(@()anon(c))];
fprintf('%.2fms ',t*1000)
0.31ms 41.80ms 152.93ms
But it turns out the result is incorrect for strings. The reason is that the legacy syntax doesn't call overloaded methods (as the documentation explicitly states). The problem I have with this, is that this sounds like it would only apply to user-created classes, or to classes that are exclusive to a toolbox. It turns out that assuming fundamental classes will work, will burn you in the end:
% function handles are a fundamental class as well, but can't be empty
fundamental_classes={logical([]),string([]),char([]),int8([]), int16([]), int32([]), int64([]),uint8([]),uint16([]),uint32([]),uint64([]),single([]),[],table([]),timetable('Size',[0 0],'VariableTypes',{},'RowTimes',datetime([],[],[])),{},struct([])};
for n=1:numel(fundamental_classes)
if ~isequal(cellfun('isempty',fundamental_classes(n)),cellfun(@isempty,fundamental_classes(n)))
fprintf('For %ss, the legacy syntax doesn''t match the modern syntax.\n',class(fundamental_classes{n}))
end
end
For strings, the legacy syntax doesn't match the modern syntax. For tables, the legacy syntax doesn't match the modern syntax. For timetables, the legacy syntax doesn't match the modern syntax.
%(local functions must appear at the end of the post for the run feature to work)
%call the functions in a loop to make them take longer
function lega(c),for n=1:100,cellfun('isempty' ,c);end,end
function hand(c),for n=1:100,cellfun(@isempty ,c);end,end
function anon(c),for n=1:100,cellfun(@(x)isempty(x),c);end,end
My main problem with this is not that you need to manually test things like this if you plan on taking advantage of arcane features. My problem is that Mathworks discourages optimizing your code for how Matlab works internally. When I read "this doesn't work for overloaded methods" I understand "though luck, you can't use this for custom classes, but vanilla Matlab classes are fine". In this case I should have read "dig deep in your Matlab install (e.g. with which) to try to figure out which data types use an overloaded method". Bug or feature? I think reasonable minds can disagree.
I found a similar issue where this page seems to suggest Matlab uses UTF-8 (or even the full 21 bits) to encode chars internally, while it actually uses UTF-16, as mentioned here. (on closer reading the first page could be construed to only apply to files and byte streams, but this lack of clarity is not usual for Matlab documentation)
  10 Comments
Rik
Rik on 7 Dec 2021
I just checked, and R2010a doesn't have the C++ file (and R2007b does, I don't have access to any intermediate releases). I assume Yair checked the newest version at the time of posting the blog (R2009a), even if that release was only a month old. Perhaps a Mathworks engineer was reading that blog post and considered it leaking of source files, so it was no longer included in later releases.
I don't really understand why it was included in the first place anyway.

Sign in to comment.


dpb
dpb on 30 Jun 2020
Edited: dpb on 3 Jul 2020
Switching named parameter names for newer functions to not be compatible with old -- from the time of textscan on which goes way back, the parameter was 'headerlines' for the number of headerlines to skip. This followed w/ readtable at least; I forget about who else, but is well-established tradition.
Then up and come along the new readtimetable, readmatrix and friends and voila! it's now 'NumHeaderLines' . While perhaps could have been argued back in the beginning, once it was established, there's no reason to change just to change.
I will grant that some (I haven't tested them exhaustively, may be all) at least also recognize 'headerlines' as well -- that's a start.
But, it isn't reciprocal--the old guys weren't patched to accept the new parameter name so if one gets trained to use the new, then have typos for the previous functions.
Where are the user-interface design folks in the internal design reviews that let this happen??? Doesn't TMW have a specific part of the design review team to try to create and enforce consistency?

Bruno Luong
Bruno Luong on 26 Jul 2020
FIND(..., 0) throw an error.
>> x=rand(1,10)>0.6
x =
1×10 logical array
1 0 1 1 1 0 0 0 1 1
>> find(x)
ans =
1 3 4 5 9 10
>> find(x,2)
ans =
1 3
>> find(x,1)
ans =
1
>> find(x,0)
Error using find
Second argument must be a positive scalar integer.
Why MATLAB prefers to throw an error rather than returns an empty array is a mystery to me.
  2 Comments
Bruno Luong
Bruno Luong on 26 Jul 2020
Edited: Bruno Luong on 26 Jul 2020
Typically when N argument is from some calculation that can be 0 or not.
As example I just bumped into the ERROR when I do this code, I must redefine FIND that returns [] when N is 0 (see MYFIND()) as workaround, that is silly.
Beside that it make perfectly sence mathematically to returns [] for N == 0. The fact that FIND(...,0) must be [] is similar to these
  • SUM([]) == 0,
  • PROD([])==1,
  • FACTORIAL(0) == 1,
  • ZEROS(0) == []
which are all implemented as such.

Sign in to comment.


per isakson
per isakson on 20 Dec 2020
Edited: per isakson on 20 Dec 2020
It frustrates me that else if is legal (R2018b)
%%
if length(c) > 1
d(end + 1,1) = 1;
else if length(c) == 1 %#ok<SEPEX>
if n > 0
ia = 1;
return
end
end
end
%%
a = 1;
if a == 1
b = 17;
else b = 17; %#ok<SEPEX>
end
Doc says: "Avoid adding a space after else within the elseif keyword (else if). The space creates a nested if statement that requires its own end keyword."
It may be by design, but it still frustrates me.
When is a comma or semicolon required as separator between "keyword" and "keyword"/"statement"?
%%
a = 1;
if a == 1 b = 17; %#ok<SEPEX>
else b = 18; %#ok<SEPEX>
end
%%
for jj = 1:2 a=jj^2; end
%%
while n<=3 n=n+1; end
  5 Comments
dpb
dpb on 20 Dec 2020
I also misread Walter's intent...I'm in agreement with that comment entirely; which puts mine out of context with it.

Sign in to comment.


dpb
dpb on 29 Jun 2020
Edited: dpb on 29 Jun 2020
Introducing all these mostly opaque graphics objects that users can't get to to fix up for cases not foreseen by TMW.
bar is another abomination have complained about for 25+ years -- there are any number of threads on Answers about annotation for it that have answered over and over.
Not to mention hatching patterns and a much larger supply of prebuilt colors/patterns for automagic cycling...
And last, but not least, the butt-ugly "0" at the origin of the default axes instead of matching the rest of the formatting..yes, it comes that way automagically because of the default '%g' but it's still ugly as sin. :)
  1 Comment
dpb
dpb on 7 Aug 2020
"bar is another abomination have complained about for 25+ years -- "
I just saw this complaint from earlier this year next door to the above--I will give TMW credit they did finally uncover the xData position so one can label bars without having to use hidden properties. This is a far cry from having a full set of properties settable for the bars including labels, location, etc., etc., that would be the (imo) proper implementation.

Sign in to comment.


Paul
Paul on 3 Jul 2020
When the debugger stops at a breakpoint, why does the focus and cursor go to the breakpoint, as opposed to the command line? I always start typing and corrupt the file being debugged. Is there any utility in having the cursor and control at the breakpoint?
  2 Comments
Paul
Paul on 4 Jul 2020
Yes, yes it does! Thanks.
Question: I can see why a user would want the file opened with an indication of which break point is reached, but is there any utility in having the focus and the cursor at that point? Or is it just a thing that opening the file can't be decoupled from focus and cursor location?

Sign in to comment.


Paul
Paul on 13 Jul 2020
The documentation. I hate to say that because I do think that TMW puts a lot of effort into the documentation, which makes it all the more frustrating when
a) I can't find something that I think should really be in there (and may be, but just not easily found)
b) When I can't systematically search through the contents to find the right page. I run into the issue all the time in the Simulink documentation, and the most frustrating think about this is that I distinctly recall that at some point in the past navigating the contents was simple and intuitive and quick.
Obviously, the documentation is easy to use when one just wants to look up a function or a block. So I'm really talking about those portions of the documentation that need to explain concepts.
As an example, I was just poking around in the Control System Toolbox looking for a discussion on specified vs. unspecified sample times for discrete time systems. How does that property affect results? What about connecting models with specified and unspecified sample times? When to use one vs the other? Thinks like that. Couldn't find it, though it seems to me that's pretty basic stuff for this toolbox.
  2 Comments
dpb
dpb on 26 Dec 2020
And the change from help giving the text listing to the HTML doc -- which then has parts which end up with toolboxes with competing/overlying functionality/naming clashes which come up first instead of the base product so one then has to go find the version wanted.
Like what prompted this rant is that intersect just returned a graphics object version instead of the base product...

Sign in to comment.


Bruno Luong
Bruno Luong on 24 Jul 2020
Edited: Bruno Luong on 24 Jul 2020
If would be greak MATLAB can do auto-expansion-like for array concatenation
>> A=1:4
A =
1 2 3 4
>> B=[0;
A]
B =
0 0 0 0
1 2 3 4
"Array" means numercial/cell/struct arrays, string and table
  3 Comments
Bruno Luong
Bruno Luong on 24 Jul 2020
Edited: Bruno Luong on 24 Jul 2020
@Rik: Well, no it's quite easy. The rule is exactly like auto-expansion and bsxfun. The dimension with length==1 wil be expanded to match the other, so more complicated than this simple rule. I have done here BSXCAT.
My function is not too fast, cannot be invoked with bracket syntax, no benefit from jit accelerator. All that can be handled if TMW implements it.

Sign in to comment.


Phong Pham
Phong Pham on 13 Sep 2020
Edited: Phong Pham on 13 Sep 2020
My only feeling while using Matlab is purely amazement. Given that it has such a long development time, I am amazed that it is such a poor execuse for an IDE/execution environment, and even amazed that people actually paid for this.
Come on, with all the money people have been paying you, at least make a decent UI with decent color scheme support. Even eclipse, which is free, supports this.
I don't feel the need to mention the lacking of the language and the standard libraries itself as it's likely a legacy thing that you guys either have to keep for legacy support or are too lazy to do anything about. Either way, I feel like I am writing code with both my hands and feets tied and only allowed to use my tongue to type.
I am forced to used this for my course (student license of course), nothing else. Never again.
  4 Comments
Steven Lord
Steven Lord on 10 Mar 2022
As of release R2022a MATLAB Online now allows users to select a dark or light theme. In addition you can now change the text and background color in the Live Editor. See the first two items in the Environment section of the Release Notes for mroe information.

Sign in to comment.


Bruno Luong
Bruno Luong on 1 Mar 2021
Edited: Bruno Luong on 1 Mar 2021
Some time data comes as single, but text just rejects it
>> x=single(0);
>> y=single(0);
>> text(x,y,'Why single is not supported?')
Error using text
First two or three arguments must be numeric doubles.
  2 Comments
Steven Lord
Steven Lord on 10 Mar 2022
I'm not certain offhand when this started working, but using single data as the coordinates in a text call works now.
z = single(0.5);
text(z, z, 'Hello!')

Sign in to comment.


madhan ravi
madhan ravi on 26 Jul 2020
If find() operates along dimensions would make things a lot easier.
  8 Comments
Bruno Luong
Bruno Luong on 26 Jul 2020
Edited: Bruno Luong on 26 Jul 2020
@Image Analyst "madhan, can you give a small example matrix and what you'd expect the output to be if you used find() in the two directions (vertical and horizontal"
To me pretty similar to FIND/IND2SUB, it returns according to the number of outputs at the caller
M = rand(2,3)>0.5
[linearidx] = find(M)
[row,col] = find(M)
% or more generic
A = rand(2,3,4);
[i] = ind2sub(size(A), 20); % A is considered as 1 x 24
[i,j] = ind2sub(size(A), 20); % A is considered as 2 x 12
[i,j,k] = ind2sub(size(A), 20); % A consider as 2 x 3 x 4

Sign in to comment.


per isakson
per isakson on 17 Aug 2020
Edited: per isakson on 17 Aug 2020
Which do you prefer 'MultipleDelimsAsOne' or 'CollapseDelimiters'? Now and then I use the correct name in the wrong place.
I wish: a popup asking me whether I want the other. That would save me a bit of frustration and lower my blood pressure by several pascal.

Sindar
Sindar on 19 Sep 2020
Edited: Sindar on 20 Sep 2020
Livescript complaints
First off, they've come a long way since I tried them on release. But, there are still some issues:
Dropdown controls
  • The "item value" box is tiny
  • Keeping track of item label - item value pairs is unnecessarily complicated by the vertical arrangement (vs a table-type view)
  • poor auto-updating of labels/values when the other is changed
  • pasting code into the value box often separates lines unexpectedly (it seems to sometimes cut at mid-line whitespace)
output character limits
there seems to be no way to convince the livescript to print characters beyond a certain limit. For example,
for ind=1:10000
fprintf('Sample %d has been processed\n',ind)
end
and
for ind=1:10000
disp(['Sample ', int2str(ind), ' has been processed'])
end
both print only to
Sample 1971 has been processed
Sample...
Copying Output
  • cannot select text in output
  • copied text does not always match displayed text (e.g., copied cell arrays say "1×2 double" while output displays the numbers)
  • unclear rules (moments ago, I learned that what's copied depends on where in the output box I right click)
Export to PDF
  • can't read long code lines
  • displays variables differently (e.g., doesn't truncate table rows)
  • doesn't warn if code has been changed without re-running (so code and output don't match)
Minor gripes
  • add "run from beginning to current cell"
  • code prediction seems better than for normal scripts (even aside from the fact that variables are more often already evaluated when working with live scripts)
  • not enough heading levels
  • I'd prefer controls default to not running anything
  • "unable to run code analysis... is an invalid Matlab file name."
  • no way to collapse output (vs clearing)
  • no way to fully un-collapse output (e.g., display full table instead of scrolling)
  • figures are saved with "Visible" = off, so they don't open as expected
  5 Comments
Mario Malic
Mario Malic on 19 Sep 2020
Yikes, I saw dropdown and then immediately thought of AppDesigner, sorry about this.

Sign in to comment.


Rik
Rik on 28 Sep 2020
Comment posted by John in the previous thread:
Matlab should 'update' the new version instead of installing the new version. The reconfiguration is a nighmare because it's done only once a year or so. The extreme example is firefox, which updates once or twice a day. The users don't need to reconfigure anything.
At least matlab should provide a choice with every new version: new installtion or updating on existing version (and keep all configurations as is).
  3 Comments
Walter Roberson
Walter Roberson on 28 Sep 2020
The extreme example is firefox, which updates once or twice a day. The users don't need to reconfigure anything.
Every time firefox installs a new Major version, it creates a new User Profile which it does not initialize from the old one. This messes up my careful configuration, and I have to spend the next while fixing it. It's a big nuisance. It does not warn you in advance it is going to happen, and it is not optional.

Sign in to comment.


Bruno Luong
Bruno Luong on 16 Oct 2020
Edited: Bruno Luong on 16 Oct 2020
MATLAB startup accelerator.
I just don't like my computer being polluted by some services installed in the task scheduler. I prefer it''s OFF by default. More and more people have SSD in the computer, the accelerator has no visible effect even when it's on.

Robert
Robert on 18 Jan 2021
The biggest frustration is the limits on supported mex compilers, especially for FORTRAN. Mathworks really painted themselves into a corner with exclusive support of Intel Fortran on Mac and Windows.
They should have stuck with GNU compilers or eleminate the restriction and let us decided which compiler works.
Also, why the slow and process of updaing GNU versions supported on Linux?
  2 Comments
Michal
Michal on 18 Jan 2021
Edited: Michal on 18 Jan 2021
This problem is really terrible!
MEX support for Fortran is still extremelly important, at least from my point of view. So any kind of Fortran support ending for MEX is really nightmare.
But, the most important things are:
  1. MATLAB oficial support mainly the Intel Parallel Studio XE for (C/C++ and Fortran) on Windows platform. GNU compilers support on Windows should be main target for MATLAB (MinGW is now nearly obsolet ... latest version is from 2017??!!)
  2. slow updating process of updating GNU compilers version on Linux, which does not correspond to the current state of default GNU compilers version on supported Linux distributions
  3. and moreover, terrible situation with supported NVIDIA CUDA Toolkit versions (required by GPU coder and compiled CUDA objects). Matlab supported CUDA Toolkit does not corresponds to the required GCC versions on many recent LTS Linux distributions
So finaly, the TMW support always responds that external projects (GNU, NVIDIA CUDA, Intel Parallel Studio XE) is not under TMW control, but this situation is nearly unacceptable.

Sign in to comment.


dpb
dpb on 17 Feb 2021
So many of the nits in graphics are just irritants/time-consuming to make things look decent --
  1. The inconsistency by using '%g" as default numeric format -- variable number digits is just bxxx-ugly,
  2. Can't turn off ticks on opposite side axes with multiple axes except by box off -- that then leaves no outline so have to draw it on boundary manually
  3. Still no builtin hatching patterns
  4. Only 8 named colors. Really, in 2021???
  5. Similar limitations for markers.
  6. Can't set xlim datetime on new axes unless first draw with a datetime. (The way to change is undocumented)
  7. Putting datetime and 'XAxisLocation','top' results in clipping year; doesn't adjust for needed added room
  8. And on and on and on...

DGM
DGM on 29 Jul 2021
I keep being reminded of this every time I accidentally destroy my own work or have to process someone else's crusty images.
If the settings used for imwrite() and print() for JPG output are 75% quality and 4:2:0 chroma subsampling, then JPG output is essentially useless for the typical image content they're asked to handle. Users who think they have an understanding of the compromises they're accepting when using JPG likely have no idea that they're opting for such abnormally low-fidelity settings.
Despite the integrity of my WAN connection, this isn't 1998 anymore. If options to use a reasonable set of output parameters can't be added, then the perilous nature of the defaults should be clearly documented. While Q can be set for imwrite() output, I don't know that it can when saving figures/axes. As far as I know, the chroma subsampling isn't documented anywhere and is not user-selectable.
  5 Comments
Walter Roberson
Walter Roberson on 29 Jul 2021
Everyone expects JPG to be lossy,
In my experience, it is common for students to expect that JPEG is lossless.
On occasion, a student pretty much demands that mathematics work differently so that JPEG becomes a lossless compression...

Sign in to comment.


Rik
Rik on 3 Nov 2021
Posted by @stephen williams on the original thread:
The symbolic toolbox seems to have a lot of power, but it is not user friendly. I don't understand a lot of the error messages, and the defaults for simplification are not good. I could go on and on. For school problems, this should be everyones favorite but it is not. For work problmes the same. I work for a company who pays several million per year in maintenace fees, and find myself going to the Wolfram Alfa for symbolic solutions. Please put some investment into this toolbox.

ILoveMATLAB
ILoveMATLAB on 5 May 2022
Last fustration:MATLAB COMPLIER SDK implies MATLAB Advertisment.
If [blank] spends XX,XXX dollars extra to purchase the MATLAB Compiler SDK+ Required ADD ONS to export thier appliaction,[blank] should be able to replace the MATLAB icon with an icon of their choosing. Icons referes to the icons for figures and dialog boxes.
[blank] did not pay XX,XXX to advertise MATHWORKS

John
John on 30 Sep 2022
Edited: Walter Roberson on 30 Sep 2022
Python is only popular in the machine learning community because MATLAB isn’t free. Back before 2013 or so MATLAB was the standard programming language for machine learning work.Python would probably still be a fairly popular general programming language though. It was well on its way there before the scientific Python stack came about (and that’s a large part of the reason why the scientific Python stack was developed).
  4 Comments
Michal
Michal on 30 Sep 2022
Edited: Michal on 30 Sep 2022
@Zoltán Csáti Exactly ... !!! MATLAB needs wrappers for many high-performance libraries developed during last years. TensorFlow is one good example from many others.

Sign in to comment.


Luis Ruiz
Luis Ruiz on 3 Jul 2020
Edited: per isakson on 24 Jul 2020
Promote parameters to signals in Simulink models.
It should be possible through some kind of mask. At work, we are running through a problem where we need to change model parameters at run time, one solution is to use set_param, but that makes the simulation dreadfully slow.
The opposite (turning a signal to a parameter) is possible using constant blocks and masks.
I read the limitation comes from how parameters are used inside the models, but this functionality will help developers a lot.

madhan ravi
madhan ravi on 14 Jul 2020
Edited: madhan ravi on 14 Jul 2020
If colon operator supports an array input it would be nice:
A = 1:10;
A(:) : A(:)*100 % automatically converting each row to cell if number of elements differ
  4 Comments

Sign in to comment.


Rub Ron
Rub Ron on 26 Jul 2020

Bruno Luong
Bruno Luong on 21 Aug 2020
Edited: Bruno Luong on 21 Aug 2020
scatteredInterpolant miss a 2 C^2 of methods supported by griddata 'cublic' and especially 'v4'.

Michal
Michal on 9 Sep 2020
Edited: Michal on 9 Sep 2020
Do you really think, that these threads are read by MTW people??? I am not sure!!!
TMW definitely choose the commercial way of its bussines ... so plenty of toolboxes with all whistles and bells, but all using the matlab engine which definitely needs significant development to catch current new trends in computer science.
Just a two examples (from many others):
1. ODEs ... try to compare matlab ODEs capabilities and performance with Julia's wonderful DifferentialEquations.jl. MATLAB shows really terrible performance and flexibility in this case.
2. VPA ... try to compare VPA and Advanpix MCT toolbox. Again, the MATLAB vpa functionality and performance are really terrible. Nice speed benchmark against MAtlab VPA, Julia, Wolfram Mathematica and several Python libraries (mpmath, flint+arb) for extended precision computations. The page is in Japanese but plots and tables are easy to understand.
3. and so on ... and so on ...
I think MATLAB is still a very unique and powerful tool for numerical calculations, but it is definitely losing strength and becoming a monster standing on clay feet.
  2 Comments
Walter Roberson
Walter Roberson on 9 Sep 2020
ODEs are not part of the MATLAB engine.
Meanwhile, Mathworks has been working on improving the performance of the MATLAB engine.
I do think they should be improving the performance of the MuPAD engine, perhaps by adding multithreading (I do not know how much work the existing engine would take to make the routines thread-safe.)

Sign in to comment.


Kenn Sebesta
Kenn Sebesta on 9 Oct 2020
Edited: Kenn Sebesta on 9 Oct 2020
The number one issue I have with Matlab is the way in which implicit expansion's syntax was implemented. Perhaps there's some incredibly subtle thinking behind why overloading linear algebra operators made sense, but I haven't seen it. It's not that I haven't agreed with the reasoning, it's that I haven't seen any reasoning at all. My recollection is discovering it when someone complained that it wasn't even in the release notes and that it is, in effect, a breaking[*] change.
Issues like https://www.mathworks.com/matlabcentral/answers/318495-deactivation-switch-for-implicit-expansion#comment_699667 show the ease with which the problem arises. It would have been far preferable to have an explicit operator for implicit expansion, such as `@`, e.g. @+, @-, etc...
[*] breaking because it breaks the rules of linear algebra, which is that `a + b` is only valid if both a and b have the same dimension.