《OFDM调制解调仿真(5页).doc》由会员分享,可在线阅读,更多相关《OFDM调制解调仿真(5页).doc(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-OFDM调制解调仿真-第 5 页实验四 OFDM调制解调仿真一、 实验目的(1) 了解OFDM调制解调的原理。(2) 学会用星座图分析系统性能。二、 实验内容(1) 编写MATLAB程序,实现OFDM系统调制解调。(2) 绘制各步骤图形并分析系统特性。三、 实验代码1、主代码如下:clear all;close all;N=input(请输入码元数);SNR=input(请输入信噪比);xx=randint(1,4*N); %原序列figure(1),stem(xx,.k); %原序列图形title(原序列);B=0;for m=1:4:4*N A=xx(m)*8+xx(m+1)*4+xx(
2、m+2)*2+xx(m+3); B=B+1; ee(B)=A;endfigure(2),stem(ee,.b);title(化为015的码元);yy=star(ee,N);figure(3),plot(yy,.r); %映射后的星座图title(映射后的星座图); ff=ifft(yy,N); %傅里叶反变换N1=floor(N*1/4);N3=floor(N*3/4);N5=floor(N*5/4);figure(4),stem(ff,.m);title(傅里叶反变换后);for j=1:N1 %加循环前缀 ss(j)=ff(N3+j);endfor j=1:N %变成长度为N*5/4的序列
3、 ss(N1+j)=ff(j);endfigure(5),stem(ss,.k); %画出图形title(加N/4循环前后缀);%ss=wgn(1,N5,0,10,dBW,complex);ss=awgn(ss,SNR); %加入噪声figure(6),stem(ss,.m); %加入噪声后的图形title(加入噪声后); zz=fft(ss(N1+1):N5),N); %傅里叶变换figure(7),plot(zz,.b); %画图title(傅里叶变换后);rr=istar(zz,N); %星座图纠错figure(8),plot(rr,.r); %画图title(纠错后的星座图);dd=d
4、ecode(rr,N); %解码figure(9),stem(dd,.m); %画图title(星座图纠错并解码后);%bb=d2b(dd,N);bb=d2bb(dd,N); %转化为0/1比特流figure(10),stem(bb,.b);title(转化为0/1比特流后);2、调用的函数:(1) 星座图映射%星座图映射function yy=star(xx,N)B=-3-3*i,-3-i,-1-3*i,-1-i,-3+3*i,-3+i,-1+3*i,-1+i,3-3*i,3-i,1-3*i,1-i,3+3*i,3+i,1+3*i,1+i;for j=1:N yy(j)=B(xx(j)+1)
5、;end(2) 星座图逆映射%星座图逆映射function rr=istar(zz,N)for j=1:N if(mod(floor(real(zz(j),2)=0) zz1(j)=ceil(real(zz(j); else zz1(j)=floor(real(zz(j); end if(mod(floor(imag(zz(j),2)=0) zz1(j)=zz1(j)+ceil(imag(zz(j)*i; else zz1(j)=zz1(j)+floor(imag(zz(j)*i; end rr(j)=zz1(j);end(3) 十进制转二进制function bb=d2b(dd,N)%十进制
6、转二进制for j=1:N*4 bb(j)=;endfor j=1:4:N*4 bb1=dec2bin(dd(floor(j/4)+1),4); for k=1:4 bb(4*(j-1)+k)=bb1(k); endend(4) 十进制转化为01比特流%十进制转化为01比特流function bb=d2bb(dd,N)for j=1:N*4 bb(j)=1;endj=1;while(j=N*4) N1=ceil(j/4) a4=mod(dd(N1),2); dd(N1)=floor(dd(N1)/2); a3=mod(dd(N1),2); dd(N1)=floor(dd(N1)/2); a2=
7、mod(dd(N1),2); dd(N1)=floor(dd(N1)/2); a1=mod(dd(N1),2); bb(j)=a1; j=j+1; bb(j)=a2;j=j+1;bb(j)=a3;j=j+1;bb(j)=a4;j=j+1;end(5) 星座图逆映射function yy=decode(rr,N)for j=1:N switch(rr(j)%星座图逆映射 case -3-3*i yy(j)=0; case -3-i yy(j)=1; case -1-3*i yy(j)=2; case -1-i yy(j)=3; case -3+3*i yy(j)=4; case -3+i yy(j)=5; case -1+3*i yy(j)=6; case -1+i yy(j)=7; case 3-3*i yy(j)=8; case 3-i yy(j)=9; case 1-3*i yy(j)=10; case 1-i yy(j)=11; case 3+3*i yy(j)=12; case 3+i yy(j)=13; case 1+3*i yy(j)=14; case 1+i yy(j)=15; otherwise break; endend四、 实验结果
限制150内