1.算法概述
OFDM技术的基本构架如下所示:
注意系统中的虚线部分就是你要做的OFDM的频域同步模块。我们的MATLAB代码就是参考这个系统结构进行设计的。其中虚线就是本课题要做的代码部分。下面我们结合这个结构和我们的进行综合分析和说明。
通过对训练序列求相关值,从而得到相应的相关峰,通过搜索相关峰的顶点位置从而确定训练序列的具体位置。通过记录伪码匹配输出的最大值的位置。这里伪码匹配的输出通过加窗算法实现。
如图所示,我们通过加窗法来搜索相关峰,即根据信号功率设定一个门限,将PN码匹配后的结果与门限比较,当出现大于门限值的时候,将值记录到寄存器中,然后继续记录之后N个值,然后逐次比较得到最大值。
2.仿真效果预览
matlab2022a仿真
3.MATLAB部分代码预览
i=1;
for SNRs = 12:2:24; %设置信噪比
func_parameter(SNRs); %参数初始化
[FFTout,error_rate] = func_demod(); %解调
fileName = ['FOUT\FFTOUT_' num2str(i) '.mat'];
save(fileName,'FFTout')
pause(1);
disp('误码率为:');
error_rate
error(i) = error_rate;
i=i+1;
close all;
end
figure
plot(12:2:24,error,'r-*');
title('OFDM频域同步的误码率曲线效果图');
xlabel('SNR');
ylabel('ERR');
grid on
figure
Number_fft = 128;
load FOUT\FFTOUT_1.mat
subplot(421);
hold on;
for (i=3:45)
for(k=1:2*Number_fft)
plot(real(FFTout(i,k)),imag(FFTout(i,k)),'.k');
end;
end;
grid on;
hold off;
title('OFDM符号的星座图');
load FOUT\FFTOUT_2.mat
subplot(422);
hold on;
for (i=3:45)
for(k=1:2*Number_fft)
plot(real(FFTout(i,k)),imag(FFTout(i,k)),'.k');
end;
end;
grid on;
hold off;
title('OFDM符号的星座图');
load FOUT\FFTOUT_3.mat
subplot(423);
hold on;
for (i=3:45)
for(k=1:2*Number_fft)
plot(real(FFTout(i,k)),imag(FFTout(i,k)),'.k');
end;
end;
grid on;
hold off;
title('OFDM符号的星座图');
load FOUT\FFTOUT_4.mat
subplot(424);
hold on;
for (i=3:45)
for(k=1:2*Number_fft)
plot(real(FFTout(i,k)),imag(FFTout(i,k)),'.k');
end;
end;
grid on;
hold off;
title('OFDM符号的星座图');
load FOUT\FFTOUT_5.mat
subplot(425);
hold on;
for (i=3:45)
for(k=1:2*Number_fft)
plot(real(FFTout(i,k)),imag(FFTout(i,k)),'.k');
end;
end;
grid on;
hold off;
title('OFDM符号的星座图');
load FOUT\FFTOUT_6.mat
subplot(426);
hold on;
for (i=3:45)
for(k=1:2*Number_fft)
plot(real(FFTout(i,k)),imag(FFTout(i,k)),'.k');
end;
end;
grid on;
hold off;
title('OFDM符号的星座图');
load FOUT\FFTOUT_7.mat
subplot(427);
hold on;
for (i=3:45)
for(k=1:2*Number_fft)
plot(real(FFTout(i,k)),imag(FFTout(i,k)),'.k');
end;
end;
grid on;
hold off;
title('OFDM符号的星座图');
01_031_m