# MATLAB: What It Actually Is, and Why Almost Every Article About Its Price Is Now Wrong

The perpetual Home license is gone. MathWorks now sells Home at 165 dollars a year, Student at 119, and the free MATLAB Online tier caps you at 20 hours a calendar month.

Author: J.A. Watte
Published: July 15, 2026
Source: https://jwatte.com/blog/matlab-for-engineering-work/

---

The most repeated fact about MATLAB on the internet is that a Home license costs about 150 dollars, once, forever. As of January 1, 2026, that is wrong.

The MathWorks store now sells the [MATLAB and Simulink Home Suite at 165 dollars for an annual license](https://www.mathworks.com/store/products/home/new), a fixed bundle of fifteen products you cannot configure, with extra toolboxes at 49 dollars each. The [Student Suite is 119 dollars a year](https://www.mathworks.com/store/products/student/new) for the same fifteen, add-ons at 29. The perpetual option is not on the store. Members of the MathWorks community [documented the sunset of perpetual Home and Student](https://www.mathworks.com/matlabcentral/discussions/general/886260-change-in-home-and-student-licenses) as of the start of 2026, along with the removal of the ability to license MATLAB by itself at those tiers. That thread is community-sourced rather than a staff announcement, so treat the sunset as reported and the store prices as the hard fact. Either way, "150 dollars forever" is dead, and any article still printing it has not been checked since last year.

Pricing is where MATLAB writing goes stale fastest, and it is also the wrong place to start, because the price only makes sense once you know what you are buying, and what you are buying is not the language.

## A Fortran program written so students would not have to write Fortran

Cleve Moler died on May 20, 2026, at the age of 86, [according to the Computer History Museum](https://computerhistory.org/blog/in-memoriam-cleve-moler-1939-2026/). He was born in Salt Lake City in 1939, taught mathematics and computer science for close to two decades at Michigan, Stanford and New Mexico, and was a principal developer of LINPACK and EISPACK, [per his MathWorks bio](https://www.mathworks.com/company/aboutus/founders/clevemoler.html). He was elected to the [National Academy of Sciences in 2026](https://www.nasonline.org/news/2026-nas-election/), weeks before he died. MathWorks' own remembrance, written in the first person by an employee who joined in 1991, puts it flatly: without him "the company would not exist. Cleve Moler created MATLAB, and MATLAB created MathWorks."

The origin explains the design. EISPACK, first released in 1971 with a second version in 1976, and LINPACK, proposed to the National Science Foundation in 1975 and shipping 44 subroutines in each of four numeric precisions, were Fortran libraries. Powerful, and a chore. In [Moler's words](https://www.mathworks.com/company/technical-articles/the-origins-of-matlab.html): "I wanted my students to be able to use our new packages without writing Fortran programs." So in the late 1970s at New Mexico he wrote an interactive matrix calculator on top of them, itself in Fortran. It had 80 functions, no M-files and no toolboxes, and adding a function meant editing the Fortran source and recompiling the whole program. And, the sentence that still governs everything: "The only data type was matrix."

Jack Little saw it, not in Moler's classroom but secondhand from a friend who had taken the course. In 1983 he proposed commercialising it and [spent about eighteen months rewriting MATLAB in C](https://blogs.mathworks.com/cleve/2018/03/09/matlab-history-pc-matlab-version-1-0/); Steve Bangert joined and worked on it in his spare time. Between them they added M-files, toolboxes and real graphics. Moler's own account: "The three of us, Little, Bangert, and myself, formed MathWorks in California in 1984." PC-MATLAB debuted that December at the IEEE Conference on Decision and Control in Las Vegas. Note that MathWorks' [About Us page](https://www.mathworks.com/company/aboutus.html) says the company "was founded in 1984 by Jack Little and Cleve Moler" and omits Bangert; the company is not consistent on this, and Moler's first-person account is the one I would trust. He and Little later wrote a 67-page peer-reviewed history for the ACM, [published open access in June 2020](https://blogs.mathworks.com/cleve/2020/06/13/history-of-matlab-published-by-the-acm/).

## Matrix-first is not marketing, it is the whole language

MathWorks states the model plainly: MATLAB is short for matrix laboratory, and "[while other programming languages mostly work with numbers one at a time, MATLAB is designed to operate primarily on whole matrices and arrays](https://www.mathworks.com/help/matlab/learn_matlab/matrices-and-arrays.html)". Every variable is a multidimensional array regardless of type. MathWorks documents 17 fundamental classes, but [double is the default](https://www.mathworks.com/help/matlab/matlab_prog/fundamental-matlab-classes.html) and every numeric value is stored as double-precision floating point unless you say otherwise. That single decision is both why MATLAB is pleasant, with no declarations and numerics that just work, and why it eats memory.

The visible consequence is the period. [The period character distinguishes array operations from matrix operations](https://www.mathworks.com/help/matlab/matlab_prog/array-vs-matrix-operations.html). Bare `*`, `^`, `/` and `\` follow linear algebra rules and only work on 2-D matrices. The dotted forms `.*`, `.^`, `./` and `.\` are element-wise and handle N-D arrays. MathWorks' own example: for A = [1 3; 2 4] and B = [3 0; 1 5], `A*B` gives [6 15; 10 20] while `A.*B` gives [3 0; 2 20]. Both run. Only one is what you meant. Every new MATLAB user ships that bug at least once.

## What good MATLAB looks like

A small piece of real work: recover a 50 Hz tone buried in noise. Needs MATLAB and Signal Processing Toolbox.

```matlab
% denoise_tone.m - recover a 50 Hz tone buried in noise
% Requires: MATLAB + Signal Processing Toolbox

fs = 1000;                           % sample rate (Hz)
t  = (0:1/fs:1-1/fs).';              % 1 s of time as a column vector

rng(0)                               % reproducible noise
clean = sin(2*pi*50*t);              % whole vector at once, no loop
x     = clean + 0.5*randn(size(t));  % additive Gaussian noise

% Minimum-order equiripple lowpass FIR: pass to 80 Hz, 60 dB down by 120 Hz
lpf = designfilt('lowpassfir', ...
    'PassbandFrequency',   80, ...
    'StopbandFrequency',  120, ...
    'PassbandRipple',       1, ...
    'StopbandAttenuation', 60, ...
    'SampleRate',          fs);

y = filtfilt(lpf, x);                % zero-phase: forward then reverse

fprintf('SNR before: %5.1f dB\n', snr(clean, x - clean));
fprintf('SNR after:  %5.1f dB\n', snr(clean, y - clean));
```

Four things worth pulling out. There is not one loop: `sin`, `+` and `randn` all operate on the whole thousand-element vector. The `.'` is the non-conjugate transpose, correct for real data; a bare `'` is the complex-conjugate transpose and a classic silent bug. `rng(0)` is the difference between analysis and anecdote. And it is `filtfilt`, not `filter`, because [filtfilt filters forward and then in reverse](https://www.mathworks.com/help/signal/ref/filtfilt.html) for zero phase, which matters the moment you plot against ground truth. I verified this against the [designfilt](https://www.mathworks.com/help/signal/ref/designfilt.html) reference page but did not execute it, so I will not tell you what SNR numbers it prints.

Without the toolbox, the same idea is one base-MATLAB function: `y = movmean(x, 5)`, a [five-point centred moving average](https://www.mathworks.com/help/matlab/ref/movmean.html) shipped since R2016a. Cruder, free, and it runs on the free online tier.

## Used badly

The classic three-way demo:

```matlab
n = 1e5;

% Worst: array grows on every iteration (reallocates + copies)
tic; y = []; for k = 1:n, y(end+1) = sqrt(k); end; toc   %#ok<AGROW>

% Better: preallocate, then loop
tic; y = zeros(1,n); for k = 1:n, y(k) = sqrt(k); end; toc

% Best: vectorize - no loop at all
tic; y = sqrt(1:n); toc
```

That `%#ok<AGROW>` pragma suppresses the Code Analyzer's array-growth warning, and the fact that MATLAB ships a linter rule specifically for growing an array in a loop tells you how common the mistake is. MathWorks' [own documented benchmark](https://www.mathworks.com/help/matlab/matlab_prog/preallocating-arrays.html) for that pattern is 0.301528 seconds without preallocation against 0.011938 with, roughly 25x, because an unpreallocated array forces MATLAB to keep finding larger contiguous blocks and copying. Related trap on the same page: write `zeros(100,'int8')`, never `int8(zeros(100))`, which builds a double array and converts every element.

But the third line is not the moral most people draw. "Loops are catastrophically slow, always vectorize" is folklore from books written before R2015b. MathWorks' own Loren Shure blog documents [the new execution engine](https://blogs.mathworks.com/loren/2016/02/12/run-code-faster-with-the-new-matlab-execution-engine/), whose JIT "is able to compile the entire MATLAB language" rather than supplementing an interpreter. Two loop-plus-function-call tests dropped from 1.7887 seconds to 0.0435 and from 3.8667 to 0.0430, and across 76 real user applications code ran on average 40 percent faster. Those are vendor benchmarks and the microbenchmarks are best cases, but the direction is not in dispute, and function call overhead stopped being a reason to avoid small functions.

So vectorize because it reads like the mathematics and still usually wins on large arrays, not because loops are forbidden. MathWorks' [vectorization page](https://www.mathworks.com/help/matlab/matlab_prog/vectorization.html) says vectorized code "often runs much faster", and the hedge is deliberate. The real answer to "is my code slow" is [the Profiler](https://www.mathworks.com/help/matlab/matlab_prog/profiling-for-improving-performance.html): `profile viewer`, or the Run and Time button, for a flame graph, per-line timing, and which lines never executed at all. Measure first.

## What it actually costs

MathWorks publishes real, dated price lists, which is more than most enterprise vendors do. Ignore the aggregator sites and go to the source. From the [North America Standard perpetual list dated March 2026](https://www.mathworks.com/content/dam/mathworks/price-lists/north-america-standard.pdf), individual perpetual, in dollars: MATLAB 2,625. Simulink 3,965, more than MATLAB itself. Signal Processing Toolbox 1,315. Statistics and Machine Learning Toolbox 1,375. Radar Toolbox 3,625. MATLAB Coder 7,925. Concurrent floating seats run roughly four times that.

Two structural facts hide in that list. The money is not in the language, it is in verification and certification: DO Qualification Kit at 14,500, Polyspace Code Prover at 26,250, and the most expensive product on the whole list, Wireless HDL Toolbox at 30,450. The cheapest thing MathWorks sells is Spreadsheet Link at 262. And [annual is a cheaper animal](https://www.mathworks.com/store/products/standard/annual/ML): the Standard Individual suite is 940 a year and includes MATLAB, Simulink and other add-ons, while MATLAB alone on an annual term is 1,050. The bundle costs less than the single product inside it. Not a typo, just the price list.

Academic is a different universe. On the [academic perpetual list](https://www.mathworks.com/content/dam/mathworks/price-lists/north-america-academic.pdf), MATLAB is 550 and nearly every toolbox is a flat 220 or 550; Radar Toolbox drops from 3,625 to 220, about sixteen times cheaper. Do not read that as "researchers pay 550" though. MathWorks directs academic buyers to sales rather than online pricing, most universities buy negotiated campus-wide agreements, and the academic list carries a restriction worth reading twice: non-degree-granting research institutions, government agencies and other not-for-profits do not qualify.

Stack that against the [Home license terms](https://www.mathworks.com/products/matlab-home.html), equally blunt: "For personal use only. Not for government, academic, research, commercial, or other organizational use." Put the two restrictions side by side and you get the sharpest true thing here. An engineer at a defense contractor cannot use Home, and cannot use Academic. There is exactly one door, and it is Standard, at Standard prices. Two terms on that door bite later: "An active subscription is required to purchase add-on products", so a lapsed perpetual license cannot buy new toolboxes at all, and a lapsed subscription renewed later incurs back maintenance fees for the lapsed period plus "a reinstatement fee of 25% of the annual cost of Software Maintenance Service." Perpetual does not mean maintenance-free.

What is genuinely free is [MATLAB Online Basic](https://www.mathworks.com/products/matlab-online/matlab-online-versions.html): 20 hours per calendar month, a 15-minute idle timeout, 15 minutes of continuous compute, 5 GB of storage, community support only, and about ten commonly used products. A real tier and a real cap. Self-paced training and MATLAB Mobile do not count against the 20 hours.

## Why anyone pays

Not the language. Python has a better language and MathWorks knows it. On their [own comparison page](https://www.mathworks.com/products/matlab/matlab-vs-python.html) they concede that Python has an extensive library collection, that it "is easy to learn", that it "has largely replaced Java as the first language for people who want to learn how to program", and that "Python and most Python libraries are free to download or use." Their counter-framing is that Python is a general-purpose language while MATLAB is a computing platform for engineering work, and their recommendation is to use both. Unusually honest vendor copy.

What you are buying is the curated, versioned, documented, vendor-supported toolbox stack, plus code generation, plus the certification kits that let generated code into a regulated product. [Simulink](https://www.mathworks.com/products/simulink.html) generates production C, C++, CUDA, PLC, Verilog and VHDL. The [DO Qualification Kit](https://www.mathworks.com/products/do-178.html) supplies qualification artifacts for DO-178C, DO-254, DO-278A, DO-331 and DO-333, with a separate IEC Certification Kit for IEC 61508 and ISO 26262. Read the kit's own caveat, because it is the whole game: "Tool qualification must be performed in the context of each specific project." The kit is support material. It does not prequalify anything.

The best evidence that this pays off is not on mathworks.com. It is a peer-reviewed AIAA paper by Draper Laboratory and NASA Johnson authors, [NASA NTRS 20120013073](https://ntrs.nasa.gov/api/citations/20120013073/downloads/20120013073.pdf?attachment=true), on the Orion guidance, navigation and control program. The team developed algorithms in Simulink, autogenerated C++, and dropped it into an ARINC 653 partition. The number: "No schedule time was needed for hand coding GN&C algorithms (60,000+ SLOC were autocoded by CDR)." Detailed requirements review was replaced by review of model artifacts with proven functionality.

The same paper is candid about what that cost, which is why I trust it more than any case study. "The team incurred considerable up-front cost for the transition"; "A steep learning curve for engineers not familiar with MBD tools"; "Slow and complex development tools and processes"; "Configuration management issues." The merge problem should worry any team considering this: text merge tools are highly effective for hand-written code, but graphical merge tools were "more expensive and less effective than their text counterparts", and limited distribution of them capped how much parallel development was possible. They enforced one point of contact per software unit so two people could not touch a model at once. The paper is from 2012, references Simulink 2010b, and notes several issues improved later. Read it as lessons learned, not a bug list for today's Simulink. But read it.

## The traps in every tutorial you will find

The MATLAB deep learning documentation moved and most of the internet did not. Four corrections before you copy any tutorial.

`trainNetwork` is not recommended as of R2024a; use [`trainnet`](https://www.mathworks.com/help/deeplearning/ref/trainnetwork.html), which returns a `dlnetwork`. `SeriesNetwork` and `LayerGraph` are likewise not recommended in favour of `dlnetwork`. Most tutorials still use the old ones.

`importONNXNetwork` and `importONNXLayers` are [documented "(To be removed)" since R2023b](https://www.mathworks.com/help/deeplearning/ref/importonnxnetwork.html). The current functions are `importNetworkFromONNX`, `importNetworkFromPyTorch`, `importNetworkFromTensorFlow` and `importNetworkFromKeras`, [all returning dlnetwork objects](https://www.mathworks.com/help/deeplearning/ug/interoperability-between-deep-learning-toolbox-tensorflow-pytorch-and-onnx.html).

[Deep Network Designer no longer trains](https://www.mathworks.com/help/deeplearning/ref/deepnetworkdesigner-app.html). Since R2024a it uses dlnetwork by default and the Training and Data tabs are gone. It still builds and edits architectures, imports pretrained models, analyzes them for errors, prepares transfer learning, exports to Simulink and generates code. It does not train. Any course promising no-code training in that app is selling you 2023.

And the one I see conflated constantly: training on a GPU requires Parallel Computing Toolbox, not GPU Coder. [The trainingOptions page](https://www.mathworks.com/help/deeplearning/ref/trainingoptions.html) says it outright, that the gpu, multi-gpu and parallel execution environments all require Parallel Computing Toolbox; only "auto" and "cpu" work without it. GPU Coder generates CUDA for deployment. Different product, different job, roughly 6,550 dollars of difference.

## Living with Python

Both directions work. From MATLAB you get the `py.` prefix, plus `pyrun` and `pyenv`, and a [choice between in-process and out-of-process execution](https://www.mathworks.com/help/matlab/call-python-libraries.html); take out-of-process when you can, because an in-process Python crash takes MATLAB down with it. From Python you get the [MATLAB Engine API](https://www.mathworks.com/help/matlab/matlab-engine-for-python.html), installed with `pip install matlabengine`, which is not a free back door: engine applications require an installed MATLAB and will not run against MATLAB Runtime alone. The gotcha is version coupling. Per the [Python compatibility table](https://www.mathworks.com/support/requirements/python-compatibility.html), R2026a supports 3.9 through 3.13, R2025a and R2025b stop at 3.12, and Python 2 has been gone since R2023a. If your system Python is newer than your release allows, none of this works. Same story with [importNetworkFromPyTorch](https://www.mathworks.com/help/deeplearning/ref/importnetworkfrompytorch.html), which supports networks exported from PyTorch 2.8 specifically. That is a real maintenance tax, not a footnote.

One more for controlled environments. MATLAB Copilot [requires an internet connection, a signed-in MathWorks account, and sends your code to cloud-hosted LLMs](https://www.mathworks.com/support/requirements/matlab-copilot.html), with nearby code used as additional context. MathWorks says it does not train models on submitted data. For an air-gapped or classified site it is a non-starter regardless.

## The honest summary

MATLAB is a 1970s teaching hack that got a C rewrite and forty years of toolboxes, and the toolboxes are the product. If your work is signal processing, controls, radar, or anything that ends in certified embedded code, you are buying a curated stack, a vendor who answers the phone, and a paper trail an auditor will accept. That is worth real money and MathWorks charges it. If your work is general data analysis or machine learning research, you are paying thousands of dollars for a worse language than the free one, and MathWorks' own comparison page half-admits it.

The free alternative is honest about its limits, which is more than most. [GNU Octave](https://octave.org/download) is GPL software claiming only to be "drop-in compatible with many Matlab scripts" and "largely compatible" in syntax. Read [its own wiki](https://wiki.octave.org/Differences_between_Octave_and_Matlab) and the gaps are decisive: "Octave itself includes no Simulink support"; "There is no Octave compiler", so nothing like MATLAB Coder; a JIT that is "not fully functional", meaning the loop folklore MATLAB outgrew in 2015 is still true in Octave; and toolboxes donated by volunteers rather than curated, validated and certifiable. For coursework and scripts, Octave is often fine. For model-based design, or anything DO-178C touches, it is not in the conversation.

Which is the real answer to "should I use MATLAB". It was never a language question. It is a question about whether you need the thing bolted to the language, and whether the people who audit your work will accept anything else.

## Related reading

- [If You're Going to Have AI Write Your Business Tools, Use Python](/blog/blog-claude-python-for-business-tools/): the other side of the language argument, where free and general-purpose wins outright.
- [How to Build the Skills Behind a Lead AI/ML Platform Engineer](/blog/becoming-ai-ml-platform-engineer/): the capability map for the ML stack MATLAB's Deep Learning Toolbox competes against.
- [Your AI Vendor Can Lock You Out Tomorrow](/blog/ai-vendor-lockout-continuity-plan/): the same lock-in question, asked about a faster-moving category.
- [Running Your Own AI On-Prem in 2026](/blog/local-ai-on-prem-vs-cloud/): the cloud-versus-air-gapped tradeoff that decides whether MATLAB Copilot is even an option.
- [How to Read an AI Subscription Before You Pay for the Big Tier](/blog/reading-ai-subscription-usage-caps/): how to read a usage cap like MATLAB Online's 20 hours a month before it surprises you.

## Fact-check notes and sources

- **Home Suite 165 dollars a year, Student Suite 119, add-on toolboxes 49 and 29, both fixed fifteen-product bundles:** the MathWorks store, [Home](https://www.mathworks.com/store/products/home/new) and [Student](https://www.mathworks.com/store/products/student/new). **The January 1, 2026 sunset of perpetual Home and Student:** a [MATLAB Central discussion thread](https://www.mathworks.com/matlabcentral/discussions/general/886260-change-in-home-and-student-licenses). No MathWorks staff participate in that thread, so the sunset is reported by community members, not announced by the company. The store prices are the primary-confirmed part.
- **Home is personal use only, "Not for government, academic, research, commercial, or other organizational use":** the [MATLAB Home page](https://www.mathworks.com/products/matlab-home.html). **Academic pricing excludes non-degree-granting research institutions, government agencies and other not-for-profits:** the [academic perpetual price list](https://www.mathworks.com/content/dam/mathworks/price-lists/north-america-academic.pdf).
- **Every commercial perpetual price quoted above, the certification-tool prices, Wireless HDL Toolbox at 30,450 as the most expensive product on the list, Spreadsheet Link at 262 as the cheapest, concurrent seats at roughly four times individual, and the license terms (active subscription required to buy add-ons, back maintenance plus a 25 percent reinstatement fee on a lapsed subscription):** the [North America Standard Perpetual price list, March 2026](https://www.mathworks.com/content/dam/mathworks/price-lists/north-america-standard.pdf), fetched and still carrying the March 2026 header as of July 2026. Prices exclude tax and are subject to change without notice. **The 940-dollar annual suite undercutting 1,050 for MATLAB alone:** the [MathWorks store annual product listing](https://www.mathworks.com/store/products/standard/annual/ML).
- **Free MATLAB Online: 20 hours per calendar month, 15-minute idle timeout, 15 minutes continuous compute, 5 GB storage, community support:** [MATLAB Online Versions](https://www.mathworks.com/products/matlab-online/matlab-online-versions.html). The page says ten products but lists eleven, so "about ten" is deliberate.
- **Cleve Moler's death on May 20, 2026 at 86, and his birth in Salt Lake City in 1939:** the [Computer History Museum](https://computerhistory.org/blog/in-memoriam-cleve-moler-1939-2026/). Place and cause of death are reported elsewhere and are not in that source, so they are omitted here. **His titles, teaching career, LINPACK/EISPACK role, NAE 1997 and NAS 2026:** his [MathWorks bio](https://www.mathworks.com/company/aboutus/founders/clevemoler.html), with the 2026 NAS election independently confirmed in the [Academy's own announcement](https://www.nasonline.org/news/2026-nas-election/). **"MATLAB created MathWorks":** the [MathWorks remembrance](https://blogs.mathworks.com/matlab/2026/05/27/cleve-moler-1939-2026/), which is a personal first-person post by an employee, not a corporate statement, and does not itself state his age.
- **Origins, the 80 functions, "The only data type was matrix", and the Fortran-recompile constraint:** [The Origins of MATLAB](https://www.mathworks.com/company/technical-articles/the-origins-of-matlab.html). **EISPACK's first release in 1971 and second in 1976, LINPACK proposed in 1975 with 44 subroutines in each of four precisions, Little learning of MATLAB from a friend who took Moler's course rather than from the course itself, and the 1983 commercialisation proposal:** [A Brief History of MATLAB](https://www.mathworks.com/company/technical-articles/a-brief-history-of-matlab.html). **The three-founder account, the eighteen-month C rewrite, Bangert's spare-time work, and PC-MATLAB's December 1984 debut at the IEEE Conference on Decision and Control:** [Cleve's Corner](https://blogs.mathworks.com/cleve/2018/03/09/matlab-history-pc-matlab-version-1-0/). MathWorks' [About Us page](https://www.mathworks.com/company/aboutus.html) names only two founders; the three-founder version is Moler's own. **The 67-page ACM HOPL IV history by Moler and Little, published open access in June 2020:** [the announcing blog post](https://blogs.mathworks.com/cleve/2020/06/13/history-of-matlab-published-by-the-acm/).
- **17 fundamental classes with double as the default numeric type:** [Fundamental MATLAB Classes](https://www.mathworks.com/help/matlab/matlab_prog/fundamental-matlab-classes.html). The count is MathWorks' own; I have not enumerated it here because the page's own list and its stated count do not agree. **The period operator and the A\*B versus A.\*B example:** [Array vs. Matrix Operations](https://www.mathworks.com/help/matlab/matlab_prog/array-vs-matrix-operations.html); the arithmetic checks by hand.
- **The 0.301528 versus 0.011938 second preallocation benchmark and the int8 conversion trap:** [Preallocating Arrays](https://www.mathworks.com/help/matlab/matlab_prog/preallocating-arrays.html). **The R2015b execution engine, the 1.7887 to 0.0435 and 3.8667 to 0.0430 second results, and the 40-percent average across 76 user applications:** [Loren on the Art of MATLAB](https://blogs.mathworks.com/loren/2016/02/12/run-code-faster-with-the-new-matlab-execution-engine/). All of these are MathWorks' own benchmarks on MathWorks' own tests; no independent MATLAB-versus-NumPy benchmark is cited here because I did not find one worth citing. **"Often runs much faster", not always:** [Vectorization](https://www.mathworks.com/help/matlab/matlab_prog/vectorization.html). **Profiler behaviour:** [Profile Your Code to Improve Performance](https://www.mathworks.com/help/matlab/matlab_prog/profiling-for-improving-performance.html).
- **The worked examples** were verified line by line against the [designfilt](https://www.mathworks.com/help/signal/ref/designfilt.html), [filtfilt](https://www.mathworks.com/help/signal/ref/filtfilt.html) and [movmean](https://www.mathworks.com/help/matlab/ref/movmean.html) reference pages, but were not executed, because no MATLAB installation was available. Syntax, argument names and toolbox requirements are documentation-confirmed; the numbers the first script prints are not stated because I do not know them.
- **Orion GN&C: 60,000-plus SLOC autocoded by CDR, and the candid costs including the graphical-merge weakness, the one-point-of-contact rule, and the cyclomatic-complexity mismatch:** [NASA NTRS 20120013073](https://ntrs.nasa.gov/api/citations/20120013073/downloads/20120013073.pdf?attachment=true), a peer-reviewed AIAA paper by Mark C. Jackson of Draper Laboratory and Joel R. Henry of NASA Johnson. It dates from 2012 and references Simulink 2010b, and the paper itself notes several issues improved in later versions, so its criticisms are historical lessons, not a current defect list. **Certification kit scope and the per-project qualification caveat:** [DO Qualification Kit](https://www.mathworks.com/products/do-178.html). **Code generation targets:** [Simulink](https://www.mathworks.com/products/simulink.html).
- **The deep learning renames:** [trainNetwork (Not recommended)](https://www.mathworks.com/help/deeplearning/ref/trainnetwork.html), [importONNXNetwork "(To be removed)" since R2023b](https://www.mathworks.com/help/deeplearning/ref/importonnxnetwork.html), [the interoperability page](https://www.mathworks.com/help/deeplearning/ug/interoperability-between-deep-learning-toolbox-tensorflow-pytorch-and-onnx.html), and [Deep Network Designer](https://www.mathworks.com/help/deeplearning/ref/deepnetworkdesigner-app.html) losing its Training and Data tabs in R2024a. **GPU training requires Parallel Computing Toolbox, not GPU Coder:** [trainingOptions](https://www.mathworks.com/help/deeplearning/ref/trainingoptions.html).
- **Python interop, in-process versus out-of-process:** [Call Python from MATLAB](https://www.mathworks.com/help/matlab/call-python-libraries.html). **The engine requiring an installed MATLAB rather than MATLAB Runtime:** [MATLAB Engine for Python](https://www.mathworks.com/help/matlab/matlab-engine-for-python.html). **Version support by release:** [Python compatibility](https://www.mathworks.com/support/requirements/python-compatibility.html). **PyTorch 2.8 coupling:** [importNetworkFromPyTorch](https://www.mathworks.com/help/deeplearning/ref/importnetworkfrompytorch.html). **Copilot's internet, account, cloud-LLM and regional requirements:** [MATLAB Copilot requirements and FAQ](https://www.mathworks.com/support/requirements/matlab-copilot.html). Its price is not public and is not stated here.
- **MathWorks' concessions about Python:** their [MATLAB vs. Python page](https://www.mathworks.com/products/matlab/matlab-vs-python.html), which is marketing copy and is quoted as such. **Octave's compatibility claims, licence and release history:** [octave.org](https://octave.org/download). **Octave's admitted gaps, including no Simulink, no compiler, and a not-fully-functional JIT:** the [Octave wiki](https://wiki.octave.org/Differences_between_Octave_and_Matlab), which is credible here precisely because it is Octave's own project documenting its own limits. MathWorks is privately held and publishes no revenue figure, so none is stated in this post.

*This post is informational and reflects public documentation, published price lists, and peer-reviewed papers; it is not purchasing, licensing, or compliance advice, and I have no affiliation with MathWorks, NASA, the GNU Octave project, or any other organization named. Prices, release features, and license terms are current as of mid-2026 and change without notice.*


---

Canonical HTML: https://jwatte.com/blog/matlab-for-engineering-work/
RSS: https://jwatte.com/feed.xml
JSON Feed: https://jwatte.com/feed.json
Hero image: https://jwatte.com/images/matlab-for-engineering-work.webp
