File Exchange

## Guidelines for writing clean and fast code in MATLAB

version 1.8.0.0 (390 KB) by
This document gives hints on how to write fast and good quality MATLAB code.

Updated 05 Nov 2015

View Version History

Editor's Note: This file was selected as MATLAB Central Pick of the Week

This document is aimed at all MATLAB users who are already familiar with the syntax but may not yet know the each and every pitfall of MATLAB programming. Its goal is to give a number of hints which enable the reader to write quality MATLAB programs and to avoid commonly made mistakes.
There are three major independent chapters which may very well be read separately. Also, the individual chapters each split up into one or two handful of chunks of information. In that sense, this document is really a slightly extended list of dos and don’ts.
This guide is written as part of a basic course in numerical analysis, most examples and codes will hence tend to refer to numerical integration or differential equations. However, almost all aspects are of general nature and will also be of interest to anyone using MATLAB.
Feel free to contribute at https://github.com/nschloe/matlab-guidelines.

### Cite As

Nico Schlömer (2020). Guidelines for writing clean and fast code in MATLAB (https://www.mathworks.com/matlabcentral/fileexchange/22943-guidelines-for-writing-clean-and-fast-code-in-matlab), MATLAB Central File Exchange. Retrieved .

Jeff Severino

Sam

Guojin Feng

YEONHWA KIM

Egon Geerardyn

E. Cheynet

David Verrelli

Generally very sound advice, with concrete illustrations in code.

Personally I prefer not to include helper functions within other functions, unless the helper function is a short "anonymous function":
http://au.mathworks.com/help/matlab/matlab_prog/anonymous-functions.html?s_tid=doc_12b

One other tip: besides building "fences", now in MATLAB you can identify "code sections" by use of two consecutive percent symbols (%%), which acts something like a 'super comment'. When opened in MATLAB, the code sections are visually distinct, and can easily be run separately in a 'procedural' script (less easily in a function).
http://au.mathworks.com/help/matlab/matlab_prog/run-sections-of-programs.html?searchHighlight=section%20comment

Praviraj PG

Mateo Sundquist

Nico Schlömer

@Mark Mikofski Definitely a good idea to add this.

Mark Mikofski

Julia (http://www.julialang.com) is a new language that has the potential to be an alternative to MATLAB. It is targeted at MATLAB users, but it's speed approaches native C, is open-source (as in free beer) and has parallelism built in. Python has obviously been around longer, but Julia out performs Python by a order of magnitude.

Christoph Feenders

Paul Metcalf

Michael Völker

Vaclav Bouse

nice, clear, overview, worthy to read

Roger Parkyn

Good clearly presented examples make this easy to read but still informative. Will be useful for people new to Matlab (and I learnt a few things from it too!).

##### MATLAB Release Compatibility
Created with R2009a
Compatible with any release
##### Platform Compatibility
Windows macOS Linux