General MEX Implementation of Thomas' Algorithm

MEX (C/C++) Implementation of Thomas Algorithm (or Tridiagonal Matrix Algorithm) for real and complex data.

https://github.com/michael-nix/MATLAB-MEX-Thomas-Algorithm

Vous suivez désormais cette soumission

MLDIVIDE has a great tridiagonal matrix solver for sparse matrices, and there are other implementations of Thomas' algorithm out there (see below), but I needed a faster way to solve tridiagonal systems for complex data; this seems to do the trick. On my system (and R2018b), this is about four times faster than MLDIVIDE or a straight up implementation in MATLAB.

This does use interleaved complex numbers with AVX instructions for complex operations, so to compile for use just put it on your path, type "mex -R2018a 'CFLAGS=-mavx' tdma.c" and it should work.

For a MEX implementation that works on REAL data, please see:
https://www.mathworks.com/matlabcentral/fileexchange/38640-implementation-of-thomas-algorithm--mex

For a MATLAB implementation that works on all data, please see:
https://www.mathworks.com/matlabcentral/fileexchange/40722-tridiag-m

Citation pour cette source

oreoman (2026). General MEX Implementation of Thomas' Algorithm (https://github.com/michael-nix/MATLAB-MEX-Thomas-Algorithm), GitHub. Extrait(e) le .

Remerciements

Inspiré par : Implementation of Thomas algorithm, mex, tridiag.m

Informations générales

Compatibilité avec les versions de MATLAB

  • Compatible avec les versions R2018a et ultérieures

Plateformes compatibles

  • Windows
  • macOS
  • Linux

Les versions qui utilisent la branche GitHub par défaut ne peuvent pas être téléchargées

Version Publié le Notes de version Action
2.7.0.2

Connecting to GitHub...

2.7.0.1

Of course I forgot a few important comments on how to compile the MEX thread pool stuff so... fixed.

2.7.0

Added in a version that includes use of new persistent Thread Pool code for multi-threading, greatly speeding up smaller 2D and 3D problems.

2.6.5.0

Fixed a stupid logic error for 3D problems.

2.6.0.0

Added additional error checking, and updated some notes on multi-threading performance.

2.5.0.0

Added in limited multi-threading support, with underwhelming results.

2.0.0.0

Updated to include real data too, and to handle multi-dimensional problems without the need for permutation and reshaping of inputs / outputs.

1.0.0.0

Added in some error checks so things don't just crash MATLAB if you're off by a little bit.

Pour consulter ou signaler des problèmes liés à ce module complémentaire GitHub, accédez au dépôt GitHub.
Pour consulter ou signaler des problèmes liés à ce module complémentaire GitHub, accédez au dépôt GitHub.