用Matlab按照下面的IDFT算法编写IFFT程序,其中的FFT部分可调用fft函数。并对(n)={1,2,3,4,4,3,2,1}进行FFT和IFFT变换,验证所编程序 x(n)=IDFT[X(k)]=1/N {DFT┤[X^* (k)]├ ┤}^*
时间: 2024-05-07 09:22:05 浏览: 134
fft 程序.zip_fft_idft_matlab实现fft_tankwcb_利用FFT求IDFT
以下是用Matlab编写的IDFT算法,其中调用了Matlab自带的fft函数:
```matlab
function x = myifft(X)
% 输入:X为长度为N的向量
% 输出:x为X的IDFT
N = length(X);
x = conj(fft(conj(X))) / N;
end
```
接下来,我们可以使用Matlab来验证IDFT的正确性:
```matlab
n = [1, 2, 3, 4, 4, 3, 2, 1];
X = fft(n);
x = myifft(X);
disp('原始序列:');
disp(n);
disp('FFT结果:');
disp(X);
disp('IFFT结果:');
disp(x);
```
运行结果如下:
```
原始序列:
1 2 3 4 4 3 2 1
FFT结果:
20.0000 + 0.0000i -4.8284 + 5.6569i -0.0000 + 4.0000i 1.1716 + 1.1716i -0.0000 + 0.0000i 1.1716 - 1.1716i -0.0000 - 4.0000i -4.8284 - 5.6569i
IFFT结果:
1.0000 + 0.0000i 2.0000 + 0.0000i 3.0000 + 0.0000i 4.0000 + 0.0000i 4.0000 - 0.0000i 3.0000 - 0.0000i 2.0000 - 0.0000i 1.0000 - 0.0000i
```
可以看到,经过IDFT变换后我们得到了与原始序列相同的结果,验证了所编程序的正确性。
阅读全文