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!