Replacing eigenvalue decomposition with Fourier Transform
显示 更早的评论
Hello,
I am doing matrix inversion of circulant matrix using eigenvalue decomposition method. However, I found that the complexity is high which I know as O(n^3). Then, I found that the complexity can be reduced to O(n log n) using Fourier Transform (FFT) method.
Thus, I would be very happy if someone can explain to me the method how to replace Eigenvalue decomposition method with Fourier Transform (FFT) method in order to do matrix inversion.
Thank you.
Huda
8 个评论
Christine Tobler
2019-4-15
There's an explanation of how the FFT method relates to circulant matrices here: https://en.wikipedia.org/wiki/Circulant_matrix#Other_properties (see the 4th bullet point).
Nurulhuda Ismail
2019-4-24
Nurulhuda Ismail
2019-4-29
编辑:Nurulhuda Ismail
2019-4-29
Christine Tobler
2019-4-29
编辑:Christine Tobler
2019-4-29
I agree with Matt, best to just call sort() on the eigenvalues computed using DFT. What order do you need the eigenvalues to be in?
I noticed something else: The eigenvalues should be much closer together than in your example above. The problem is that the numbers 2.7798 - 0.8504i and 2.7798 + 0.8504i are both used in the same "lane" of the matrix C, so this matrix is not circular. If I replace the values in that lane to all use "+", the eigenvalues are nearly identical
>> eig(C)
ans =
12.5649 - 0.8504i
15.3549 - 0.8504i
19.4343 + 0.8504i
19.6047 + 0.8504i
>> fft(C(:, 1))
ans =
19.4343 + 0.8504i
12.5649 - 0.8504i
19.6047 + 0.8504i
15.3549 - 0.8504i
Also, instead of multiplying with the matrix F, call the function fft instead. The behavior is the same, but it's much faster when the size of the matrix grows.
Nurulhuda Ismail
2019-5-1
Nurulhuda Ismail
2019-5-3
Christine Tobler
2019-5-3
In your PDF there are red circles around some numbers, but those numbers seem accurate up to a reasonable accuracy to me. Can you compute abs(C1 - C2)? I think the error will be very small.
回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Linear Algebra 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!