OFDM MATLAB 仿真程序.doc_第1页
OFDM MATLAB 仿真程序.doc_第2页
OFDM MATLAB 仿真程序.doc_第3页
OFDM MATLAB 仿真程序.doc_第4页
OFDM MATLAB 仿真程序.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

6t1F6WGdH5F ur.O,mB0X i1k,x0Y+R$U5U5? *x0echo off;clear all;close all;clc;1fKf&|r0gU-D-_0fprintf( OFDM仿真n) ;wXXin%m,ZB0tic% - %B6)eu Zx0% 参数定义 %3TNZk9x)OI6xK0% - %中国通信网无限分享w/DDoK% Initialize the parameterskH#Bs4J o0NumLoop = 1000;中国通信网无限分享8C.e/AUyfNumSubc = 128;pK1dA?;O0NumCP = 8;k+y$E X&y6RW0SyncDelay = 0;中国通信网无限分享0d*m;*|.J/aC#i(X0% 子载波数 128!hb%j!MTuO;Y2V0h0% 位数/ 符号 2中国通信网无限分享$k6,N?% 符号数/ 载波 1000p;I3sOzRR0% 训练符号数 0中国通信网无限分享8S3V_!Deej% 循环前缀长度 8 (1/16)*T+H7g/6O2d)pJ0H 0% 调制方式 4-QAMReH3H Cq$y9C0% 多径信道数 3 中国通信网无限分享(HF,N1u;xH% IFFT Size 128 中国通信网无限分享 !vu)fQ% 信道最大时延 2中国通信网无限分享%F-CW9 W|.I% - %:g?7&P$u3J-P(U1W0% QAM MODULATION %;r r asd6z|0% - %nS0KR2j0YSi|Md0% Generate the random binary stream for transmit testpk.j,FqU;z-y0BitsTx = floor(rand(1,NumLoop*NumSubc)*2);% Modulate (Generates QAM symbols)中国通信网无限分享tW6F0Wy/SK% input: BitsTx(1,NumLoop*NumSubc); output: SymQAM(NumLoop,NumSubc/2)中国通信网无限分享2w2x/eB4S2+SymQAMtmp = reshape(BitsTx,2,NumLoop*NumSubc/2).;fM8POZ) j0SymQAMtmptmp = bi2de(SymQAMtmp,2,left-msb);*YK.F/et00%-Xic0% 函数说明:m4Dh*T cDG0% bin2dec(binarystr) interprets the binary string binarystr and returns the中国通信网无限分享GtZV8A% equivalent decimal number.FyS0pQTFRl0% bi2de是把列向量的每一个元素都由2进制变为10进制n|L &$?0%D = BI2DE(.,MSBFLAG) uses MSBFLAG to determine the input orientation.中国通信网无限分享v:z7YKIKU;r Mj_% MSBFLAG has two possible values, right-msb and left-msb. Giving ar4Uo5J0% right-msb MSBFLAG does not change the functions default behavior.中国通信网无限分享 _ f5bA&uAl%Giving a left-msb MSBFLAG flips the input orientation such that the中国通信网无限分享7an gOqp2W_8N% MSB is on the left.中国通信网无限分享X;3f %Z+E5z;g% % % D = BI2DE(.,P) converts a base P vector to a decimal value.中国通信网无限分享#h! H6G% % Examples:中国通信网无限分享4E#o62rY/n6Kqx+n,d% % B = 0 0 1 1; 1 0 1 0;中国通信网无限分享8j*Q eK5z% % T = 0 1 1; 2 1 0;WuxX C9q%s/b0yR2QY-R6D0% % D = bi2de(B) D = bi2de(B,left-msb) D = bi2de(T,3)FjQUJ*H0% % D = D = D =中国通信网无限分享!R)k i3jux yg% % 12 3 12中国通信网无限分享C |;yk f% % 5 10 5中国通信网无限分享H k B-g3b!R)gj%-% QAM modulation 中国通信网无限分享 F+? f2H+q4D% 00-1-i,01-1+i,10-1-i,11-1+i5e-dxA!I:w0% 利用查表法进行QAM星座映射GVa#W/9(UJy0QAMTable = -1-i -1+i 1-i 1+i;中国通信网无限分享:Y.j)ozh YSymQAM = QAMTable(SymQAMtmptmp+1);% - %L$T-X8_*nO!r C0% IFFT %中国通信网无限分享4M9$E#Cn% - %中国通信网无限分享hZT$vZ% input: SymQAM(NumLoop,NumSubc/2); output: SymIFFT(NumSubc,NumLoop)中国通信网无限分享+Ek/nj fR,B/ESymIFFT = zeros(NumSubc,NumLoop);:#h&P5r29W H&I8t% O0SymIFFTtmp = reshape(SymQAM,NumSubc/2,NumLoop);中国通信网无限分享wPO!v SymIFFTtmptmp = zeros(NumSubc,NumLoop);)A!_vb?F)Ci0SymIFFTtmptmp(1,:) = real(SymIFFTtmp(1,:); % 实数1Nmkgh0SymIFFTtmptmp(NumSubc/2+1,:) = imag(SymIFFTtmp(1,:); % 实数RX+FD0% 这么安排矩阵的目的是为了构造共轭对称矩阵中国通信网无限分享7q N m b2G!RC% 共轭对称矩阵的特点是 在ifft/fft的矢量上 N点的矢量/t qP6?,q3n#y+Q0% 在0,N/2点必须是实数 一般选为0中国通信网无限分享G3J4A*j.Jz+x-r4% 1至N/2点 与 (N/2)+1至N-1点关于N/2共轭对称SymIFFTtmptmp(2:NumSubc/2,:) = SymIFFTtmp(2:NumSubc/2,:);中国通信网无限分享CPqE7bSymIFFTtmptmp(NumSubc/2+2):NumSubc,:) = flipdim(conj(SymIFFTtmp(2:NumSubc/2,:),1);H_vE(O6G0%-Q6h,j/M#XP$Wv0% 函数说明:)sJE7P0% B = flipdim(A,dim) returns A with dimension dim flipped.中国通信网无限分享#o%i;My*Ug#b% When the value of dim is 1, the array is flipped row-wise down. When dim is 2,中国通信网无限分享+Agi w;H% the array is flipped columnwise left to right. flipdim(A,1) is the same asCGY;h%Ow+B0% flipud(A), and flipdim(A,2) is the same as fliplr(A).C4LeS0%-中国通信网无限分享BguRm% % a = 1 2 3; 4 5 6; 7 8 9; 10 11 128w*d9P,q%f0% % a =中国通信网无限分享4q 6KA4r(N S0% % 1 2 3中国通信网无限分享Ey;w;Se% % 4 5 6中国通信网无限分享)JT%F j R% % 7 8 9中国通信网无限分享0A2k nif)a,c% % 10 11 12h!W/M k(T0% % b = flipdim(a,1)YWW;V0u0% % b =CD:jfHs0% % 10 11 12中国通信网无限分享w)XzU,|,QhC*E% % 7 8 9*SI(f;Y*w Y0% % 4 5 6中国通信网无限分享s rWx7k% % 1 2 3SymIFFT = ifft(SymIFFTtmptmp,NumSubc,1);% - %)gB)N Rk*Lls0% Add cyclic prefix %中国通信网无限分享-k9r4Ia g p$HT&L% - %中国通信网无限分享:_1jkbI6eP9% input: SymIFFT(NumSubc,NumLoop); output: SymCP(NumSubc + NumCP,NumLoop)Y9JftM0NumAddPrefix = NumSubc + NumCP;中国通信网无限分享,nK3e,Z$g#b2lnSymCP = zeros(NumAddPrefix,NumLoop);gnB9bXu9p b*a0RowPrefix = (NumSubc - NumCP + 1):NumSubc;中国通信网无限分享V_W;9m1QNSymCP = SymIFFT(RowPrefix,:);SymIFFT;% - %ikG(Cp,_$v*db0% Go through the channel %0 ai0% - %0w!jv| gJ Q0% input: SymCP(NumSubc + NumCP,NumLoop); output: SymCh(1,(NumSubc + NumCP)*NumLoop)中国通信网无限分享D-Do5P0h1uSymCh = zeros(1,(NumSubc + NumCP)*NumLoop);中国通信网无限分享rSn0WSymChtmp = SymCP(:).; % 进行这个转置操作之后就成了一个矢量y5kU)c$k12|-r0% 相当于把矩阵的列向量依次排列 改变为一个行向量$m B&x$lw0Ch = 1 1/2 1/4;9a&u4XLI0I0SymChtmptmp = filter(Ch,1,SymChtmp);2+Q.O y |4N+ q0%-中国通信网无限分享t&z 7|I8?% 函数说明:中国通信网无限分享|0GXFW% Firlter data with an infinite impulse response (IIR) or finite impulse response1a5X ?R2P0% (FIR) filter中国通信网无限分享K4RGnez j c% y = filter(b,a,X) filters the data in vector X with the filter described by:v4Ef f!M a0% numerator coefficient vector b and denominator coefficient vector a. If a(1) is8H5z2n|0,Dj*v0% not equal to 1, filter normalizes the filter coefficients by a(1). If a(1) equals)A&W$Rb n8c0% 0, filter returns an error.中国通信网无限分享Q bxG3f8K%-中国通信网无限分享Q2Ao4IYX Z1eP*i% If X is a matrix, filter operates on the columns of X. If X is a multidimensional中国通信网无限分享OlAHJ% array, filter operates on the first nonsingleton dimension.L;P 8X r7u p0%-% Add the AWGNGd(S K0BerSnrTable = zeros(20,3);+a P#c$y0for snr=0:19; % = SNR + 10*log10(log2(2);6PJ81_Sej,x0yV)Y0 BerSnrTable(snr+1,1) = snr;-e2 u0n%qWM&|ka0SymCh = awgn(SymChtmptmp,snr,measured);zA,jj QiZ,j0%-中国通信网无限分享$PuGK3V c J% 函数说明:)N v;6Akp2kbL0% AWGN Add white Gaussian noise to a signal.#|l_;V;Z-Z5j0% Y = AWGN(X,SNR) adds white Gaussian noise to X. The SNR is in dB.5f;l KA:v0% The power of X is assumed to be 0 dBW. If X is complex, then ;6_G7d0% AWGN adds complex noise.中国通信网无限分享Mi$Y3Qr5PV% -:dX(Wa| a0% Y = AWGN(X,SNR,SIGPOWER) when SIGPOWER is numeric, it represents K2F.o kdP0% the signal power in dBW. When SIGPOWER is measured, AWGN measures中国通信网无限分享7iSft,uM+G% the signal power before adding noise.q7j sX0% -中国通信网无限分享g%LBg T g-k% Y = AWGN(X,SNR,SIGPOWER,STATE) resets the state of RANDN to STATE.中国通信网无限分享2jnH H !_% 中国通信网无限分享K.w cW;j% Y = AWGN(., POWERTYPE) specifies the units of SNR and SIGPOWER.VAvb*P0% POWERTYPE can be db or linear. If POWERTYPE is db, then SNR中国通信网无限分享 E4x4?% is measured in dB and SIGPOWER is measured in dBW. If POWERTYPE isNR&mqe0% linear, then SNR is measured as a ratio and SIGPOWER is measured中国通信网无限分享%s1m/VT.EZ% in Watts.中国通信网无限分享B,n:eBs% hxr?*u0% Example: To specify the power of X to be 0 dBW and add noise to produce中国通信网无限分享U&uI-a8KqF+V9M% an SNR of 10dB, use:W0m,:?A0% X = sqrt(2)*sin(0:pi/8:6*pi);U(l!r$Q-kj0% Y = AWGN(X,10,0);中国通信网无限分享JV+D(c9uJ4deh?% 中国通信网无限分享6(A;yMW wv% Example: To specify the power of X to be 0 dBW, set RANDN to the 1234th#A7V Fx0% state and add noise to produce an SNR of 10dB, use:中国通信网无限分享)k&cE?T-e% X = sqrt(2)*sin(0:pi/8:6*pi);中国通信网无限分享%w*R U3EPs5N% Y = AWGN(X,10,0,1234);LY4ZJ0% -A*ppgc0% Example: To specify the power of X to be 3 Watts and add noise to中国通信网无限分享P7lL0j$iP.j% produce a linear SNR of 4, use:中国通信网无限分享QE*xs1:x6IAa4aQ% X = sqrt(2)*sin(0:pi/8:6*pi);中国通信网无限分享bH H |3sA.g$Yt.D% Y = AWGN(X,4,3,linear);中国通信网无限分享 JB iB*t% D5P0Uk4g-P0% Example: To cause AWGN to measure the power of X, set RANDN to the 中国通信网无限分享JG?o#l|O#v% 1234th state and add noise to produce a linear SNR of 4, use:cy;T$?Jqb?0% X = sqrt(2)*sin(0:pi/8:6*pi);中国通信网无限分享)d9AFK1?!bZ,6Sa% Y = AWGN(X,4,measured,1234,linear);% - %3tn&e0% Remove Guard Intervals %中国通信网无限分享 CGP%O3C/ewa% - %:G6k)K8A)O*B.BA0% input: SymCh(1,(NumSubc + NumCP)*NumLoop); output: SymDeCP(NumSubc,NumLoop)中国通信网无限分享r5hw*scx%c5?SymDeCP = zeros(NumSubc,NumLoop);&EbZ TG H&ZD8rlYq:r0SymDeCPtmp = reshape(SymCh,NumSubc + NumCP,NumLoop);9pv:n!Z&gw#J40SymDeCP = SymDeCPtmp(NumCP+1+SyncDelay):NumAddPrefix+SyncDelay,:);% - %V3t5E0N$0% FFT %中国通信网无限分享m_.Ev Z9O,w/% - %CQ-f%|K1z(k1JJ0% input: SymDeCP(NumSubc,NumLoop); output: SymFFT(NumSubc,NumLoop)MfIqOE!Y0SymFFT = fft(SymDeCP,NumSubc,1);% - %中国通信网无限分享 m.B i9k*O%l% Make Decision(Include DeQAM) %$JY2P(vjz0% - %o7fI?HM z4_0% SymFFT(NumSubc,NumLoop); output: SymDec(NumSubc,NumLoop)中国通信网无限分享 ACt lm5D8SymDec = zeros(NumSubc,NumLoop);+mO5Vgm!A#b0SymEqtmp(1,:) = SymFFT(1,:)+i*SymFFT(NumSubc/2+1,:);中国通信网无限分享#Uxj*dnJ-sdSymEqtmp(2:NumSubc/2,:) = SymFFT(2:NumSubc/2,:);中国通信网无限分享zA G$N:?2Lfor m = 1:NumLoop中国通信网无限分享a3U qUl* for n = 1:NumSubc/2中国通信网无限分享$q _IWL%vTr Real = real(SymEqtmp(n,m);)S:L |3J+Irk0 Imag = imag(SymEqtmp(n,m);中国通信网无限分享BQD+?Sd R x-K6Yar oMA0 if( abs(Real -1) abs(Real +1)中国通信网无限分享d6f!| SG Yd SymDec(2*n-1,m) = 1;中国通信网无限分享v*sA-W/p(AC elseR,aR3l0N(j5x+?0 SymDec(2*n-1,m) = 0;%|;jAQl7i0 end if( abs(Imag -1) -1-i,01-1+i,10-1-i,11-1+i中国通信网无限分享&y,u5d(o6L uTestSymDec = zeros(NumSubc,NumLoop);中国通信网无限分享eOL)s0I3xVXQplTestSymEqtmp(1,:) = SymFFT(1,:)+i*SymFFT(NumSubc/2+1,:);b y.H9A3jo7V v6F0TestSymEqtmp(2:NumSubc/2,:) = SymFFT(2:NumSubc/2,:);中国通信网无限分享 C9j P.b0J(b a.jTestSymEqtmp1 = reshape(TestSymEqtmp,1,NumSubc*NumLoop/2);:Ttb,g ow(VdU:R.J0min_d = zeros(size(TestSymEqtmp1);GTn7/b*q(s)HS0min_ddd = zeros(1,NumSubc*NumLoop);0o5|nv bn0d = zeros(4,1);中国通信网无限分享Kcs&f;e f(emin_index = 0;ar!T x0i8H%.w HD0for ii = 1:1:(NumSubc*NumLoop/2)7MhZ#j$qy-m70 for jj = 1:4中国通信网无限分享7E*rEq/g+L,J d(jj) = abs(TestSymEqtmp(ii) - QAMTable(jj);a k,9eA1|%B,y0 end中国通信网无限分享a f8T7| YW min_d(ii),min_index = min(d);$p8GsK gdSD0% % Y,I = MIN(X) returns the indices of the minimum values in vector I. 中国通信网无限分享 U(J i REJ switch min_index中国通信网无限分享r)j7W*p,b(A case 1中国通信网无限分享 hsoB2jt(i min_ddd(2*ii-1) = 0 ;xC x:y!tS Q7|%n0 min_ddd(2*ii) = 0 ;中国通信网无限分享 SG2Y&|*s8P+QB case 23&V ;uC_0 min_ddd(2*ii-1) = 0 ;t2oc3opmE2J0 min_ddd(2*ii) = 1 ;iwZ$OH?.H0 case 3daEyQ(wl0 min_ddd(2*ii-1) = 1 ;中国通信网无限分享A&t,byGxt min_ddd(2*ii) = 0 ;-G1Y(O D0D#UTL0 case 4中国通信网无限分享fE&eWpEd min_ddd(2*ii-1) = 1 ;?:|,fYx6m0 min_ddd(2*ii) = 1 ;中国通信网无限分享 p!s6S%f(Nz otherwisen*yq-p0H1Xm-G0 fprintf(Impossible error! nn);中国通信网无限分享DdF;WSJl end中国通信网无限分享-M5u/mbend_!O; 2c0%-1e7PjJ Q-B0% 函数说明:中国通信网无限分享(ul JQ J)jVk-M&g-E% % C = min(A) returns the smallest elements along different dimensions of an中国通信网无限分享 fL)GK x dk% % array.v?Dm;e0% % If A is a vector, min(A) returns the smallest element in A.中国通信网无限分享-lX_s W-K% % If A is a matrix, min(A) treats the columns of A as vectors, returning a row中国通信网无限分享 r7qF4G2|Y3pH1*k% % vector containing the minimum element from each column.% % C,I = min(.) finds the indices of the minimum values of A, and returns中国通信网无限分享u(j*h6vvGi9rLLE% % them in output vector I. If there are several identical minimum values, the#I8Yh9oF?+?:Oi0% % index of the first one found is returned.% Bit Error中国通信网无限分享de6 trF&CBitsRx = zeros(1,NumSubc*NumLoop);中国通信网无限分享2R4ko9IM%Mq5_BitsRx = SymDec(:).;中国通信网无限分享.3OG/cNum,Ber = symerr(BitsTx,BitsRx)ff eY)kO#S!q0BerSnrTable(snr+1,2) = Num ;中国通信网无限分享5EPyIQMq!?BerSnrTable(snr+1,3) = Ber ;7hnp5F k6|)a)P1dN8|0end%-中国通信网无限分享e8Ys2o%s% Test by lavabin中国通信网无限分享W_fraNsif min_ddd = BitsRx 中国通信网无限分享 k5I Z&uD3A2k fprintf(DeQAM two ways the same results nn);中国通信网无限分享h;c%|m On!JAelse中国通信网无限分享kgVZ5_ fprintf(DeQAM two ways the different results);中国通信网无限分享8c2Y6hIEendA k4l|S(z-h0%-,EI+X)G_.Ot0figure(1);中国通信网无限分享Y(S B2o3N Usubplot(2,1,1);中国通信网无限分享N3 R y0%W5f)LEsemilogy(BerSnrTable(:,1),BerSnrTable(:,2),o-);中国通信网无限分享6wrgchU5itI 6ngsubplot(2,1,2);jvQ)QhbD$w0semilogy(BerSnrTable(:,1),BerSnrTable(:,3),o-);中国通信网无限分享uy t?t6q L%-time_of_sim = toc.s)KQ#m#O)gm0echo on;$Nw;u0ce0% - %aJe-O3g9x0% The END %xT6zq4l/e$o.u%z0% - %中国通信网无限分享aB2R4w&XG中国通信网无限分享,Kn.Kq Wd:X(D&aoh i% 本程序中得到的收端OFDM信号的频谱波形,是与其发端信号的排步有关的。在发端的中国通信网无限分享V$Tsp/ln% 载波安排上,128个载波有前后各32个载波是null载波(如果这前后各32各载波是带外频段,中国通信网无限分享O9F X/n-w9uI0bH% 那么理论上它们都应该是零!),中间的64个载波是数据载波。这样的排步很明显就是一个x(VfT8T5w0% 两边低,中间高的频谱形式。所以,收端也应该是这个轮廓。中国通信网无限分享0p iF$l _E6dE p&L9PZTg7xQz,w0clc;clear all;close all;echo off;tic;!F!Wbv7s0% -中国通信网无限分享0R/uVesOo% Parameter Definition,LLRu d;Qt0% -中国通信网无限分享mW&ylH aFd = 1; % symbol rate (1Hz)o(o8r:6U0Fs = 1*Fd; % number of sample per symbolQ p0 W:l0M = 4; % kind(range) of symbol (0,1,2,3)Ndata = 1024; % all transmitted data symbol 中国通信网无限分享fl yim%4qSdata = 64; % 64 data symbol per frame to ifft中国通信网无限分享ZoUVXtndSlen = 128; % 128 length symbol for IFFT 中国通信网无限分享2K9DH5w_3Nsym = Ndata/Sdata; % number of frames - Nsym frame中国通信网无限分享i Cwd0HGIlen = 144; % symbol with GI insertion GIlen = Slen + GI:.O Q3LHC0GI = 16; % guard interval length% -中国通信网无限分享5I8t)xH% Vector Initialization中国通信网无限分享x(_$o2CQU% -中国通信网无限分享Ab!n&:h/X PDX = zeros(Ndata,1);中国通信网无限分享)s P czdY1 = zeros(Ndata,1);cw-| X+?c7n6Ii0Y2 = zeros(Ndata,1);vovd O(u!H(d0Y3 = zeros(Slen,1);中国通信网无限分享0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论