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.
96.0 次下载
更新 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 (2026). General MEX Implementation of Thomas' Algorithm (https://github.com/michael-nix/MATLAB-MEX-Thomas-Algorithm), GitHub. 检索时间: .

MATLAB 版本兼容性
创建方式 R2018b
与 R2018a 及更高版本兼容
平台兼容性
Windows macOS Linux
类别
Help CenterMATLAB Answers 中查找有关 Code Generation, GPU, and Third-Party Support 的更多信息

无法下载基于 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 存储库