一、方法简介
通过一个点复数序列求出两个
点实数序列的离散傅里叶变换,进一步提升快速傅里叶变换的效率。
二、方法详解
和
是实数序列,且长度都为
,定义复数序列:
,
则序列和
可表示为:
![](https://file.jishuzhan.net/article/1713408240592621569/ed299c2cc0413fb3107b9f54f39f3cb7.webp)
![](https://file.jishuzhan.net/article/1713408240592621569/a81a170cadaf522875d968916725ee16.webp)
的离散傅里叶变换可表示为:
![](https://file.jishuzhan.net/article/1713408240592621569/6bcb7221140feb4e5d3f6e492b02e273.webp)
序列和
可表示为:
![](https://file.jishuzhan.net/article/1713408240592621569/17115f71498a7d4d6ecdae1980218d40.webp)
![](https://file.jishuzhan.net/article/1713408240592621569/ff35d759d81b11871f34c9b8ecf78975.webp)
因为,所以:
![](https://file.jishuzhan.net/article/1713408240592621569/ba202340bbab9d69a82467831e6ed424.webp)
![](https://file.jishuzhan.net/article/1713408240592621569/92a081dac630c702550e53a70fc788e6.webp)
三、MatLab代码示例
Matlab
x = [8 2 3 4 5 8];
y = [3 9 2 7 6 9];
x_fft = fft(x);
y_fft = fft(y);
z = x+1i*y;
Z = fft(z);
N = length(Z);
X = zeros(1,N);
Y = zeros(1,N);
R = real(Z);
I = imag(Z);
X(1) = R(1);
Y(1) = I(1);
for j = 2 : N
X(j) = 1/2*(Z(j)+conj(Z(N+2-j)));
Y(j) = -1i/2*(Z(j)-conj(Z(N+2-j)));
end
运行结果:
![](https://file.jishuzhan.net/article/1713408240592621569/9efd5f6897fc58f851b59d28280f70e1.webp)