OFDM基带系统仿真及频谱特性分析

2020-04-15 05:21

白噪声下OFDM调制解调基带系统仿真

一、实验要求

1、信噪比 2~14dB,步进2dB 2、误码率性能<10-4

3、仿真分析OFDM信号的功率谱特性

二、实验程序流程图和程序

本实验中只进行了OFDM基带的系统设计仿真,分别采用了16QAM和QPSK两种方式进行映射和逆映射,OFDM基带系统程序流程图如图1所示:

二进制数据流16QAM/QPSK映射串并转换IFFT并串转换计算误比特率绘制OFDM信号功率谱高斯噪声二进制数据流16QAM/QPSK逆映射并串转换FFT串并转换

图1 OFDM基带系统程序流程图

实验程序:

1、QPSK映射程序

function [out_message]=QPSK(Sig)

[a1,b1]=find(Sig(:,1)==0&Sig(:,2)==0); out_message(a1)=-1-j; [a2,b2]=find(Sig(:,1)==0&Sig(:,2)==1);out_message(a2)=-1+j; [a3,b3]=find(Sig(:,1)==1&Sig(:,2)==0);out_message(a3)=1-j; [a4,b4]=find(Sig(:,1)==1&Sig(:,2)==1);out_message(a4)=1+j; end

2、QPSK逆映射程序

function [out_symbol,out_bit]=DeQPSK(Sig_noise)

m1=find(angle(Sig_noise)<=pi/2&angle(Sig_noise)>0);

out_symbol(1,m1)=1+j; out_bit(m1,1)=1; out_bit(m1,2)=1;

m2=find(angle(Sig_noise)>pi/2&angle(Sig_noise)<=pi);

out_symbol(1,m2)=-1+j; out_bit(m2,1)=0; out_bit(m2,2)=1;

m3=find(angle(Sig_noise)>-pi&angle(Sig_noise)<=-pi/2);

out_symbol(1,m3)=-1-j; out_bit(m3,1)=0; out_bit(m3,2)=0;

m4=find(angle(Sig_noise)>-pi/2&angle(Sig_noise)<=0);

out_symbol(1,m4)=1-j; out_bit(m4,1)=1; out_bit(m4,2)=0; end

3、复高斯白噪声程序

function [sig_noise,snr_dB] = fu_awgn (Sig,SNR,Num_signal) L_SNR = 10.^(SNR/10); % 转换为线性信噪比 Eb = sum(abs(Sig).^2)/Num_signal; % 每比特的能量 N0 = Eb/L_SNR; % 噪声功率谱密度

noise_R1 = randn(1,length(Sig)); % 实际产生均值为0,方差为1的随机高斯序列,功率谱密度是1

noise_R2 = noise_R1-mean(noise_R1); % 让均值再更接近0

noise_R3 = noise_R2./std(noise_R2); % 标准差归一化 让均值等于0 noise_R = noise_R3*sqrt(N0/2); % 使得功率谱密度是N0/2 noise_I1 = randn(1,length(Sig)); % 实际产生均值为0,方差为1的随机高斯序列,功率谱密度是1

noise_I2 = noise_I1-mean(noise_I1); % 让均值再更接近0

noise_I3 = noise_I2./std(noise_I2); % 标准差归一化 让均值等于0 noise_I = noise_I3*sqrt(N0/2); % 使得功率谱密度是N0/2 x = noise_R + j*noise_I; % 生成复噪声

sig_noise = Sig+x; % 此时加入的就是Eb/N0 snr=sum(abs(Sig).^2)/sum(abs(x).^2);

snr_dB=10*log10(snr); % 实际加入的信噪比SNR end

4、主程序(求误比特率曲线) %% OFDM基带系统 clear all;close all;clc %% 参数设置

N = 256; % fft点数

Num_carriers = 256; % 载波数 length_symbol =10000; % 符号长度 M = 2;

bit_num = Num_carriers*length_symbol*M; % 数据个数 Pe_check = [];

for SNR = 2:2:14 % 输入信噪比 %% 产生基带数据信号 Sig= randi([0 1],1,bit_num); %% QPSK调制

Sig =reshape(Sig,2,bit_num/2)'; %QPSK映射 [out_message]=QPSK(Sig); %% 串并转换

Sig__modulation = reshape(out_message,Num_carriers,length_symbol); %% 插值

interp_Sig_modulation =

[Sig__modulation(1:Num_carriers/2,:);zeros(N-Num_carriers,length_symbol);Sig__modulation(Num_carriers/2+1:Num_carriers,:)]; %% ifft

ifft_message = ifft(interp_Sig_modulation,N); % 求PSD

fft_ps_ifft_message = fftshift(fft(ifft_message,1024)); PSD_message =

10*log10(abs(fft_ps_ifft_message).^2/max(abs(fft_ps_ifft_message).^2)); f1 = (0:length(PSD_message)-1)/length(PSD_message); figure(1)

plot(f1,PSD_message);hold on ;plot(0:1/N:1, 0, 'r*');axis([0 1 -40 0]);xlabel('归一化频率');ylabel('归一化功率');title('OFDM信号功率谱') %% 加入复高斯白噪声

Re_message = reshape(ifft_message,1,N*length_symbol);

[sig_noise,snr_dB] = fu_awgn (Re_message,SNR,length(Re_message)); %% 并串转换

ps_sig_noise = reshape(sig_noise,N,length_symbol); %% fft

fft_Re_message = fft(ps_sig_noise,N); %% 抽值

samp_fft_Re_message =

[fft_Re_message(1:Num_carriers/2,:);fft_Re_message(Num_carriers/2+1:Num_carriers,:)];

%% QPSK解调 samp_fft_Re_message =

reshape(samp_fft_Re_message,1,Num_carriers*length_symbol);

[out_symbol,out_bit]=DeQPSK(samp_fft_Re_message); % QPSK逆映射 [resum,ratio1]=symerr(Sig,out_bit); Pe = ratio1;

Pe_check = [Pe_check,Pe]; end

SNR = 2:2:14; figure

semilogy(SNR,Pe_check,'-kd');xlabel('信噪比/dB');ylabel('误比特率');axis([2 14 1e-6 1]);

5、主程序(绘制功率谱和频谱) %% OFDM基带系统 clear all;close all;clc %% 参数设置

N = 64; % fft点数 Num_carriers = 32; % 载波数 length_symbol =100; % 符号长度 M = 2;

bit_num = Num_carriers*length_symbol*M; % 数据个数 %% 产生基带数据信号 Sig= randi([0 1],1,bit_num); %% QPSK调制

Sig =reshape(Sig,2,bit_num/2)'; %QPSK映射 [Sig_modulation]=QPSK(Sig); %% 串并转换

Sig_modulation = reshape(Sig_modulation,Num_carriers,length_symbol); %% 插值

interp_Sig_modulation_psd =

[Sig_modulation(1:Num_carriers/2,:);zeros(N-Num_carriers,length_symbol);Sig_modulation(Num_carriers/2+1:Num_carriers,:)]; %求功率谱插值

Sig_modulation = [Sig_modulation';zeros(length_symbol,Num_carriers)]; %每隔一个信道插值一个符号长度的0;此时得到的频谱不正交

interp_Sig_modulation = reshape(Sig_modulation,length_symbol,2*Num_carriers)'; %% ifft

ifft_message = ifft(interp_Sig_modulation_psd,N); % 求PSD

fft_ps_ifft_message = fftshift(fft(ifft_message,1024)); PSD_message =

10*log10(abs(fft_ps_ifft_message).^2/max(abs(fft_ps_ifft_message).^2)); f1 = (0:length(PSD_message)-1)/length(PSD_message); figure(1)

plot(f1,PSD_message) hold on

plot(0:1/N:1, 0, 'r*')

axis([0 1 -40 0]);xlabel('归一化频率');ylabel('归一化功率谱');title('OFDM符号功率谱')

%求频谱

fft_ps_ifft_message1 = fftshift(interp_Sig_modulation(:,1),2048); %进行了插值 fft_ps_ifft_message2 = fftshift(Sig_modulation(:,1),2048); %未进行插值 f1 = (0:length(fft_ps_ifft_message1)-1)/length(fft_ps_ifft_message1); f2 = (0:length(fft_ps_ifft_message2)-1)/length(fft_ps_ifft_message2); figure(2) subplot(211)

plot(f1,abs(fft_ps_ifft_message1)/max(abs(fft_ps_ifft_message1)));

axis([0 1 0 1.2]);xlabel('归一化频率');ylabel('归一化频谱');title('一倍插值后的OFDM符号频谱') subplot(212)

plot(f2,abs(fft_ps_ifft_message2)/max(abs(fft_ps_ifft_message2)));

axis([0 1 0 1.2]);xlabel('归一化频率');ylabel('归一化频谱');title('未插值的OFDM符号频谱')

三、实验结果

1、OFDM基带系统误比特曲线


OFDM基带系统仿真及频谱特性分析.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2013年园艺昆虫学考题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: