OFDM学习-通过共轭配对实现IFFT输出虚部为零-输出实部信号-避免后续DA转化后进行的操作

发布于:2024-10-17 ⋅ 阅读:(7) ⋅ 点赞:(0)

共轭配对实现IFFT输出虚部为零


前言

正常来讲,OFDM发射机中,经过IFFT输出的两路信号分别是实部信号和虚部信号,完成基本的信号处理后需要进行DA转换,分别对cos和相差90度相位的cos相乘后进行信号叠加,进而完成信号发射的基本形式。

本文是通过处理IFFT的输入,利用共轭的基本性质,最后使得IFFT的虚部信号输出基本为0,实际仿真得出虚部信号在(FE~01)之间,基本满足。
在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

一、MATLAB验证

MATLAB代码,构造共轭的复数序列,绘制IFFT后的实部图像和虚部图像,观察虚部图像是否为0

% 创建一个包含32个复数的序列
x = [0+0i, 2+3i, 3+4i, 4+5i, 0-0i, 4-5i, 3-4i, 2-3i ,0+0i, 2+3i, 3+4i, 4+5i, 0-0i, 4-5i, 3-4i, 2-3i,0+0i, 2+3i, 3+4i, 4+5i, 0-0i, 4-5i, 3-4i, 2-3i ,0+0i, 2+3i, 3+4i, 4+5i, 0-0i, 4-5i, 3-4i, 2-3i];

% 计算32点的逆快速傅里叶变换
y = ifft(x);

% 绘制原始复数序列和IFFT结果

figure;

% 绘制原始复数序列的实部和虚部
subplot(2, 2, 1);
stem(real(x), 'filled');
title('Real Part of Original Sequence');
xlabel('Index');
ylabel('Amplitude');

subplot(2, 2, 2);
stem(imag(x), 'filled');
title('Imaginary Part of Original Sequence');
xlabel('Index');
ylabel('Amplitude');

% 绘制IFFT结果的实部和虚部
subplot(2, 2, 3);
stem(real(y), 'filled');
title('Real Part of IFFT Result');
xlabel('Index');
ylabel('Amplitude');

subplot(2, 2, 4);
stem(imag(y), 'filled');
title('Imaginary Part of IFFT Result');
xlabel('Index');
ylabel('Amplitude');

% 打印IFFT结果的前32个值
disp('IFFT result:');
disp(y);

其中主要是构造复数序列,首先第一个位置是直流分量,这个不要动。
首先选2-15的复数序列,共轭配对对应着32-17,注意这个顺序。最后观察这个信号IFFT前后的实部信号图和虚部信号图:
在这里插入图片描述
由图像中可以看出,上面两个图像分别是IFFT处理前的实部信号和虚部信号,下面两个图是经过IFFT后的实部信号和虚部信号,很明显虚部信号变为0,只剩下实部信号。

二、FPGA仿真验证

就是在你IFFT处理之前,进行一些操作,比如你是64点IFFT,会使用FFT的ip核就非常省事了,就只要选择前半部分的实部和虚部信号,后半部分直接将虚部信号取反,就完成了共轭配对的工作。

通过IFFT输出,可以看到虚部信号基本为0
在这里插入图片描述

总结

共轭这个处理手段能够减少后面的一定操作,如果需要,可以简化整体的一个流程。