Toeplitzmult
This directory contains MATLAB functions for the fast multiplication of a Toeplitz matrix times a vector. By using these routines you can avoid storing the entire matrix (using two vectors of lenght n rather than a matrix of size n*n), and also dramatically speedup the multiplication. The algorithm used here runs in O(n*log(n)) time instead of the O(n^2) time required by conventional matrix multiplication.
The simplest case involves the multiplication of a Toeplitz matrix times a single vector. To multiply toeplitz(a,b) times x, use
>> y=toeplitzmult(a,b,x)
If you have a single matrix that will be multiplied times many vectors, then use
>> F=toeplitzmultaux(a,b);
>> y1=toeplitzmult2(F,x1);
>> y2=toeplitzmult2(F,x2);
>> y3=toeplitzmult2(F,x3);
...
The script example.m demonstrates the use of these functions.
Note that this code works correctly with matrices and vectors that are real or complex. However, due to round-off errors, the product might have a small imaginary component even though a,b, and x are all real. To correct this, simply use
real(toeplitz(a,b,x))
A good introduction to how these algorithms work can be found in the book "Matrix Computations, 3rd ed." by Golub and Van Loan.
引用
Brian Borchers (2024). Toeplitzmult (https://www.mathworks.com/matlabcentral/fileexchange/8548-toeplitzmult), MATLAB Central File Exchange. 取得済み .
MATLAB リリースの互換性
プラットフォームの互換性
Windows macOS Linuxカテゴリ
- MATLAB > Mathematics > Linear Algebra >
タグ
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!toeplitzmult/
バージョン | 公開済み | リリース ノート | |
---|---|---|---|
1.0.0.0 |