Skip to main content
v2026.11,858 entries · CC-BY 4.0
LAC HealthMedical & Research SuppliesReagents, PPE & instruments — chain-of-custody documented.Fast, traceable sourcing built for regulated research environments, from bench consumables to instrumentation.Shop lac.us CodeCASRAIlac.us

Linux MATLAB: Setup, Terminal CLI, and HPC Execution

Learn how to install and execute MATLAB on Linux, configure terminal CLI flags (-nodesktop, -batch), resolve display issues, and compare free alternatives.

Written and maintained by CASRAI Editorial Board

Last updated

Running MATLAB on Linux enables researchers to execute high-throughput numerical simulations, image processing pipelines, and data analytics on local workstations, remote servers, and high-performance computing (HPC) clusters. MathWorks supports validated 64-bit Linux distributions (such as Ubuntu, Debian, and Red Hat Enterprise Linux), providing both an interactive graphical desktop and scriptable headless command-line execution modes.

What it is used for in research

MATLAB is widely used across academic and industrial research for mathematical modelling, matrix manipulation, signal processing, neuroimaging, control systems, and algorithmic development. In computational disciplines, researchers manage large datasets and run complex computational jobs that exceed the memory or processing capabilities of personal laptops.

Deploying MATLAB in a Linux environment provides key advantages for scientific workflows:

  • HPC and cluster scheduling: Linux is the standard operating system for supercomputers and compute clusters. Running MATLAB on Linux allows researchers to submit parallel array jobs via workload managers such as Slurm, PBS, or Grid Engine without running graphical user interfaces.
  • Automated pipeline integration: Headless execution modes allow MATLAB analysis scripts to be embedded directly into automated workflows alongside shell scripts, Python utilities, and compiled binaries.
  • Computational reproducibility: Running standardized MATLAB container images or fixed installations on stable Linux server distributions ensures consistent execution environments, supporting long-term reproducibility across scientific projects.
  • Data handling: Direct integration with high-speed POSIX file systems and network storage allows efficient reading and processing of structured research data across multi-terabyte datasets.

MATLAB on Linux for High-Performance Computing (HPC)

In HPC environments, researchers typically connect to Linux nodes via SSH. Rather than launching resource-intensive desktop sessions, researchers use batch execution commands to run simulation sweeps across multiple CPU cores or GPU nodes. MATLAB integrates with the MATLAB Parallel Server and Parallel Computing Toolbox to distribute computations across cluster nodes.

MATLAB for Linux vs. Desktop Workstations

While researchers often prototype code and develop visualizations on macOS or Windows (see our guide on MATLAB on a MacBook), production workloads frequently migrate to Linux servers. Linux provides direct terminal control, scriptable automation, and lower system overhead, freeing computing resources for memory-intensive simulations.

Install or access

Installing MATLAB on Linux requires access to an official MathWorks Account linked to a valid license (such as an Individual, Academic Campus-Wide, or Concurrent Network License). MathWorks does not distribute MATLAB through native Linux package managers (such as APT or DNF); installations are completed via MathWorks’ official installer archive.

Official System Requirements (64-Bit Linux)

MathWorks validates specific Linux releases for stability and hardware driver support. Minimum technical requirements include:

  • Validated Distributions: Ubuntu (24.04 LTS, 22.04 LTS, 20.04 LTS), Debian (12, 11), Red Hat Enterprise Linux (RHEL 9, RHEL 8 minimum 8.6), and SUSE Linux Enterprise Server 15. The core environment requires Linux kernel version 4.18 or later and GNU C Library (glibc) version 2.28 or later.
  • Processor: Any Intel or AMD x86-64 processor with a minimum of two cores. A processor supporting the AVX2 instruction set is strongly recommended.
  • RAM: Minimum 8 GB; 16 GB or more recommended for data-intensive toolboxes and parallel processing.
  • Disk Storage: 4.1 to 4.5 GB for the base MATLAB installation; 5 to 7 GB for a typical installation with common toolboxes; up to 26 GB for all MathWorks products. Solid-state drive (SSD) storage is recommended.
  • Graphics: A GPU supporting WebGL 2.0 or OpenGL 3.3 with at least 2 GB of dedicated GPU memory for hardware-accelerated 3D graphics.

Step-by-step task

Follow these sequential steps to install, configure, and launch MATLAB on a Linux machine.

Step 1: Download the installer package

Log in to the official MathWorks Downloads portal and download the Linux installer ZIP archive (for example, matlab_R2024b_Linux.zip) to your system.

Step 2: Extract the installer archive

Open a terminal, navigate to the directory where the archive was downloaded, and extract the files into a dedicated installation folder:

mkdir -p ~/Downloads/matlab_installer
unzip matlab_R2024b_Linux.zip -d ~/Downloads/matlab_installer
cd ~/Downloads/matlab_installer

Step 3: Set display permissions and launch the installer

If installing system-wide to /usr/local/MATLAB, the installer requires root privileges. In an active X11 desktop session, grant the root user access to the local X display before launching the installer with sudo:

xhost +SI:localuser:root
sudo -H ./install

Note: If you do not have root privileges, you can run ./install without sudo and install MATLAB directly into your user home directory (for example, ~/MATLAB/R2024b).

Step 4: Complete the setup wizard

  1. Sign in: Enter your MathWorks Account email and password.
  2. Select license: Choose your active license from the list or provide a File Installation Key.
  3. Destination folder: Confirm the destination path (default: /usr/local/MATLAB/R2024b).
  4. Select products: Check the toolboxes required for your research.
  5. Configure symbolic links: Check the option to create symbolic links in /usr/local/bin so that the matlab command is accessible across all terminal sessions.
  6. Install: Click Begin Install and wait for the files to download and configure.

After installation, revoke the temporary root display permission:

xhost -SI:localuser:root

Step 5: Configure system PATH (if symlinks were omitted)

If symbolic links were not created automatically during setup, create a manual link or add the binary directory to your shell configuration:

sudo ln -sf /usr/local/MATLAB/R2024b/bin/matlab /usr/local/bin/matlab

Alternatively, append the directory to your ~/.bashrc file:

export PATH="/usr/local/MATLAB/R2024b/bin:$PATH"

Apply the change by executing source ~/.bashrc.

Step 6: Launch MATLAB using the appropriate startup mode

Depending on your research environment, launch MATLAB using the command-line flags tailored to your task:

  • Interactive Graphical Desktop: Launch the full IDE and toolstrip:
    matlab
  • Terminal CLI Mode (No Desktop): Suppress the heavy desktop IDE while keeping terminal interactivity. Standalone figure windows can still display if an X server connection exists (see our guide on commenting in MATLAB for scripting standards):
    matlab -nodesktop
  • Headless Mode (No Display): Run on remote servers without an X server or graphical display. This prevents attempts to open figure windows:
    matlab -nodisplay
  • Non-Interactive Batch Mode: Execute an analysis script non-interactively. This mode streams console output, returns exit code 0 on success (or non-zero on failure), and exits automatically:
    matlab -batch "run_pipeline"
  • Single-Thread Execution: Limit CPU execution to a single computational thread, preventing MATLAB from consuming all cores on a shared server:
    matlab -singleCompThread -batch "run_pipeline"

Output and how to read it

Understanding console outputs and log files is critical when running unattended or scheduled tasks on Linux servers.

Terminal standard output and error streams

When running in -batch mode, MATLAB sends output from commands (such as disp, printed variables, and progress indicators) to standard output (stdout). Diagnostic warnings and syntax errors are routed to standard error (stderr).

To record execution logs for research audits and debugging, redirect both streams to a log file:

matlab -batch "run_analysis" > analysis_output.log 2>&1 &

Alternatively, use the built-in -logfile startup option:

matlab -nodisplay -logfile "matlab_run.log" -r "run_analysis; exit;"

Exporting data and figures headlessly

Because headless Linux servers lack graphical displays, save data and visualizations directly to disk within your scripts:

  • Exporting data: Use save('results.mat', 'dataMatrix', '-v7.3') for HDF5-compatible binary storage, or writematrix(dataMatrix, 'results.csv') for tabular data.
  • Exporting plots: Generate figures programmatically and write them to disk without rendering a screen window using exportgraphics(figHandle, 'plot.png', 'Resolution', 300) or exportgraphics(figHandle, 'plot.pdf').

Troubleshooting

The following issues frequently occur when configuring or running MATLAB on Linux systems:

1. “Cannot connect to X server” or “No protocol specified”

  • Cause: Attempting to run the graphical installer as root without granting local display access, or launching MATLAB over an SSH session without X11 forwarding.
  • Resolution: Run xhost +SI:localuser:root before using sudo in local desktop sessions. When connecting via SSH, enable X11 forwarding with ssh -X user@hostname, or run headless using matlab -nodisplay or matlab -batch.

2. Blank white screen or graphical rendering crashes

  • Cause: Incompatible GPU drivers, missing hardware acceleration libraries, or Wayland display server conflicts.
  • Resolution: Force software OpenGL rendering fallback from the command line:
    matlab -softwareopengl

    This directs MATLAB to use CPU-based software rendering, bypassing GPU driver incompatibilities.

3. Missing shared library dependencies on minimal installations

  • Cause: Minimal server or containerized Linux distributions often omit standard desktop and multimedia libraries (such as X11 client libraries, ALSA, or NSS).
  • Resolution: Install the required system packages through your distribution package manager (for example, on Ubuntu/Debian, install libasound2, libnss3, libxcomposite1, and libxtst6), or reference MathWorks’ official matlab-deps package lists.

4. CPU core oversubscription on shared nodes

  • Cause: MATLAB’s internal BLAS/LAPACK routines automatically utilize all available processor cores by default, which can degrade performance for other users on shared servers.
  • Resolution: Launch jobs with matlab -singleCompThread or restrict multi-threading within your script using maxNumCompThreads(N) where N matches your allocated core count.

Free alternatives

For research groups requiring open-source software, flexible licensing, or lower memory overhead, several mature alternatives support numerical computing on Linux:

Alternative License Syntax Compatibility with MATLAB Primary Research Strengths
GNU Octave GNU GPLv3 High (direct drop-in for most standard matrix scripts and M-files) Arithmetic, linear algebra, and data analysis without license management overhead.
Python (NumPy / SciPy) BSD / Open Source Moderate (requires 0-indexed syntax translation and NumPy array conventions) Broadest ecosystem for scientific computing, machine learning, and data visualization (see our guide on 3D plotting in Python).
Julia MIT Moderate to High (1-indexed matrix syntax; distinct syntax for functions) High-performance numerical computing, differential equations, and large-scale optimization without two-language bottlenecks.
Scilab GPL-compatible (CeCILL) Moderate (includes automated M-file conversion utilities) Engineering simulation, signal processing, and control systems (Xcos block diagram editor).

FAQ

Can MATLAB run on Linux without a graphical user interface?

Yes. You can run MATLAB entirely headlessly without an X server or graphical desktop by passing the -nodisplay flag (for interactive terminal sessions) or the -batch "statement" flag (for non-interactive script execution). Both modes suppress graphical window creation and execute directly within the shell.

What is the difference between -nodesktop and -nodisplay on Linux?

The -nodesktop flag starts MATLAB in the Linux terminal without loading the graphical desktop IDE (toolstrip and editor), but still allows standalone figure windows and UI components to display if an X11 or Wayland connection is available. In contrast, -nodisplay completely disables all graphical rendering and display connections, preventing figure windows from launching.

How do I run a MATLAB script in the background on Linux?

To run an analysis script in the background that continues executing after disconnecting from an SSH session, combine nohup with the -batch option:

nohup matlab -batch "run_analysis" > run.log 2>&1 &

This runs the process in the background, redirects all outputs to run.log, and detaches the process from the terminal session.

Does MATLAB on Linux support multi-threading and GPU acceleration?

Yes. MATLAB automatically utilizes multi-threading for linear algebra computations via multi-threaded BLAS and LAPACK libraries. For shared compute nodes, thread usage can be constrained using the -singleCompThread startup option. GPU acceleration is supported through the Parallel Computing Toolbox on systems with compatible CUDA-enabled NVIDIA GPUs.

Sources

Follow CASRAI

Research-administration guidance, standards updates and independent tool reviews.

Ask CASRAI · free to try

Ask about Linux MATLAB: Setup, Terminal CLI, and HPC Execution

Ask your first 2 questions free below. Subscribers get 150 a day for $29 a month.

An AI assistant specialized in research administration. It cites the sources behind every answer, labels web answers and says when it can't answer.

Answers draw on CASRAI's guides and dictionary plus the federal and funder documents we index: Federal Register, Grants.gov, Regulations.gov and UKRI.

Works on this site and inside Claude, Cursor and the AI tools you already use.

Everything CASRAI publishes — this page, the dictionary, the guides and the news — stays free to read, with no account and no card.

Referenced across the research world

University of Cambridge logoColumbia University logoCrossref logoUniversity of Edinburgh logoHarvard University logoUniversity of Oxford logoPrinceton University logoStanford School of Medicine logoUniversity College London logoORCID logoUniversity of Cambridge logoColumbia University logoCrossref logoUniversity of Edinburgh logoHarvard University logoUniversity of Oxford logoPrinceton University logoStanford School of Medicine logoUniversity College London logoORCID logo
  • University of Cambridge logo
  • Columbia University logo
  • Crossref logo
  • University of Edinburgh logo
  • Harvard University logo
  • University of Oxford logo
  • Princeton University logo
  • Stanford School of Medicine logo
  • University College London logo
  • ORCID logo

View CASRAI adoption →