《宽带无线接入技术》仿真实验一OFDM系统的Matlab仿真Word文件下载.docx
《《宽带无线接入技术》仿真实验一OFDM系统的Matlab仿真Word文件下载.docx》由会员分享,可在线阅读,更多相关《《宽带无线接入技术》仿真实验一OFDM系统的Matlab仿真Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。
实验成绩:
一、题目
OFDM系统的Matlab仿真
二、仿真要求
要求一:
OFDM系统的数据传输
传输的数据随机产生;
调制方式采用16QAM;
必须加信道的衰落
必须加高斯白噪声
接收端要对信道进行均衡。
要求二:
要求对BER的性能仿真
设计仿真方案,得到在数据传输过程中不同信噪比的BER性能结论,要求得到的BER曲线较为平滑。
(比较不同的信道AWGN和瑞丽)
得到不同长度CP的BER曲线对比图
得到没有信道均衡与有信道均衡的BER曲线对比图
要求三:
请双面打印,按规定时间提交实验报告
三、仿真方案详细设计
OFDM系统框图实现:
bit
噪声
此次仿真实验主要分为两个部分:
第一个是完成OFDM整个系统的仿真,主要包括星座映射(码元映射,16QAM)、IFFT、加保护间隔(CP的长度要大于多径时延的长度才能减小误码率)、经过信道的衰减(瑞丽信道)、去保护间隔、FFT、信道均衡、星座逆映射,也就是上述框图中DA转换和射频不做;
第二个是完成对BER的性能仿真,其中包括比较两种不同的信道(AWGN和瑞丽)、比较不同长度CP、比较没有信道均衡与有信道均衡这三种BER性能的对比。
其中AWGN信道就是复高斯信道,只需要加一个复高斯噪声,没有经过信道的衰落,所以最后也没有信道均衡这一步;
瑞丽信道相当于是加了复高斯噪声以后再经过信道的衰落,所以最后需要信道均衡这一步。
四、仿真结果及结论
在对比不同CP长度这一个部分,从实验结果图可以看出,其实如果两种长度都是大于最大多径时延扩展的话,其实BER性能是差不多的,但是当CP的长度小于时延扩展的话,BER性能就会大大降低,误码率会高很多。
在有没有信道均衡这一对比中,我们很明显可以发现有信道均衡的结果比没有进行信道均衡的BER性能要很好,没有信道均衡的误码率是很高的。
这是比较不同的信道(AWGN和瑞丽)的结果图,从图中可以看出经过AWGN信道之后的性能要比瑞丽衰落的性能好很多,因为瑞丽要经历衰落,而AWGN只需要在发送信号上加一个复高斯白噪声。
五、总结与体会
这是这门课的第一次仿真实验,关于OFDM整个系统的原理我是完全清楚也是掌握了的,在将原理用代码的形式来呈现的过程中,不得不说,要比想象中的难一些,老师在课上已经很仔细地讲解了一遍如何编写代码,听课的时候感觉并不是很难,但是轮到自己操作,还是会有很多错误,特别是子载波的个数,加了保护间隔之后的长度,各种参数,很容易就混乱了,还有就是在循环的过程中,有些分不清一个循环体是在哪里结束的,总是要反复看很多遍才会理清顺序。
然后再对比不同长度CP的BER性能时,最开始是直接将Ng改为Ng1、Ng2,然后把后面的每一步都依次改,结果出来的图两个是重合的,还是太混乱了,最后还是全部换掉,用了一个大的循环加判断,看起来结构就清晰很多,也得到了相应的结果。
在有没有信道均衡这一部分,完成得还是比较简单的,这个是有信道均衡:
Xmode_r1(kk1)=Y./H;
然后这个是没有信道均衡:
Xmode_r2(kk1)=Y;
然后把后面的所有相关的参数都改成两个来实现,很容易就得到结果,结果也告诉我们信道均衡是很重要的一个部分,所以每一个系统都会尽量让信道均衡变得更加容易实现,让系统的性能更加的好。
在比较不同的信道(AWGN和瑞丽)这一部分,瑞丽衰落是老师一开始给我们讲解过的,虽然相较于AWGN要复杂一些,但是也是实现得比较快,AWGN其实只是加一个复高斯白噪声,没有经历衰落,更加简单。
总之,经过这一次仿真,对于OFDM整个系统的原理,我学到的已经不单单是在课上所接受的理论知识,动手仿真可以让一个知识的原理变得更加真实,而且很多理论或者对比,都完全可以通过仿真来实现,比如你想知道哪一种调制的姓名更好,动手仿真一定是告诉你答案的最好办法。
六、主要仿真代码
比较经历不同信道(AWGN和瑞丽)的BER性能:
clearall;
clc;
Powerdb=[0-5-11-17-23];
%信道功率(单位db)
Delay=[02578];
%多径时延(每一径到达的时刻)
Power=10.^(Powerdb/10);
%将功率转化为非db
Ntap=length(Powerdb);
%功率的长度
Lch=Delay(end)+1;
%信道的长度
M=16;
%采用16QAM调制方式
Nfft=64;
%子载波个数为64
Ng=Nfft/4;
%保护间隔的长度(大于多径时延的长度)
Nsym=Nfft+Ng;
%一个OFDM符号的总长
EbN0=[0:
5:
30];
%信噪比
N_iter=1000;
%实验验证次数
Nframe=3;
%一帧传送3个OFDM符号
Sigpow=0;
fori=0:
length(EbN0)
Neb1=0;
%一个信噪比一个误码率
Neb2=0;
forj=1:
N_iter
X=randint(1,Nfft*Nframe,M);
%星座映射(映射为1到15的整数)
X_mod=qammod(X,M);
%16QAM调制
X_Gl=zeros(1,Nframe*Nsym);
%初始化发送的信号
kk1=1:
Nfft;
kk2=1:
Nsym;
fork=1:
Nframe
X_shift=X_mod(kk1);
%取出一个OFDM符号
x=ifft(X_shift);
%IFFT
X_Gl(kk2)=[x(Nfft-Ng+1:
Nfft),x];
%加cp
kk1=kk1+Nfft;
%坐标移动
kk2=kk2+Nsym;
end
%经过信道的衰减
channel=(randn(1,Ntap)+randn(1,Ntap)*1i).*sqrt(Power/2);
%多径
h=zeros(1,Lch);
%补零
h(Delay+1)=channel;
y=conv(X_Gl,h);
%卷积
ifi==0
y1=y(1:
Nsym*Nframe);
%取出一个OFDM符号,估算信号功率
Sigpow=Sigpow+y1*y1'
;
%总功率
continue;
%加高斯白噪声
snr=EbN0(i);
noise_mag=sqrt((10.^(-snr/10))*Sigpow/2);
%噪声大小
awgn=noise_mag/sqrt
(2)*(randn(size(y))+randn(size(y))*1i);
%瑞丽噪声
y_g1=y+awgn;
%瑞丽
y_g2=X_Gl+noise_mag/sqrt
(2)*(randn(size(X_Gl))+randn(size(X_Gl))*1i);
%复高斯
H=fft([h,zeros(1,Nfft-Lch)]);
%FFT
y_r=y_g1(kk2);
%经过瑞丽信道
y_rr=y_g2(kk2);
%经过AWGN信道
y_r1=y_r(Ng+1:
Nsym);
%去CP
y_rr1=y_rr(Ng+1:
Y1=fft(y_r1);
Y2=fft(y_rr1);
Xmode_r1(kk1)=Y1./H;
%信道均衡
Xmode_r2(kk1)=Y2;
%AWGN无需信道均衡
%坐标移动到下一帧
X_r1=qamdemod(Xmode_r1,M);
%16QAM逆映射
X_r2=qamdemod(Xmode_r2,M);
Neb1=Neb1+sum(sum(de2bi(X_r1,4)~=de2bi(X,4)));
%计算瑞丽衰落后误码个数
Neb2=Neb2+sum(sum(de2bi(X_r2,4)~=de2bi(X,4)));
%计算AWGN信道后误码个数
Sigpow=Sigpow/Nsym/Nframe/N_iter/4;
%计算平均功率
else
Ber1(i)=Neb1/(4*Nfft*N_iter*Nframe);
%计算经过瑞丽衰落后的误码率
Ber2(i)=Neb2/(4*Nfft*N_iter*Nframe);
%计算经过AWGN信道后的误码率
end
%画图
semilogy(EbN0,Ber1,'
-*'
);
xlabel('
EbN0[dB]'
ylabel('
Ber'
holdon
semilogy(EbN0,Ber2,'
-*r'
legend('
瑞丽信道'
'
AWGN信道'
不同CP长度对比的关键代码:
Ng=[Nfft/4,Nfft/2];
forn=1:
2%两个不同CP长度循环
Nsym=Nfft+Ng(n);
信道有没有均衡对比的关键代码:
%信道无均衡