General MEX Implementation of Thomas' Algorithm

バージョン 2.7.0.2 (18.7 KB) 作成者: oreoman
MEX (C/C++) Implementation of Thomas Algorithm (or Tridiagonal Matrix Algorithm) for real and complex data.
ダウンロード: 80
更新 2020/3/10

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

引用

oreoman (2024). General MEX Implementation of Thomas' Algorithm (https://github.com/michael-nix/MATLAB-MEX-Thomas-Algorithm), GitHub. 取得済み .

MATLAB リリースの互換性
作成: R2018b
R2018a 以降のリリースと互換性あり
プラットフォームの互換性
Windows macOS Linux
カテゴリ
Help Center および MATLAB AnswersCode Generation, GPU, and Third-Party Support についてさらに検索
謝辞

ヒントを得たファイル: Implementation of Thomas algorithm, mex, tridiag.m

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

GitHub の既定のブランチを使用するバージョンはダウンロードできません

バージョン 公開済み リリース ノート
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.

この GitHub アドオンでの問題を表示または報告するには、GitHub リポジトリにアクセスしてください。
この GitHub アドオンでの問題を表示または報告するには、GitHub リポジトリにアクセスしてください。