|
|
%实现OFDM传输的仿真程序3 p: |8 m# @# A6 N! s4 m% F. O, a& N
. H3 N) I+ ]! spara=128; %并行子信道的个数( w3 N" y. k5 f; `) }* u0 G
6 [8 D, ]3 I: y7 K8 r" O' Offtlen:128; %FFT的长度, F7 e' R' g' @ r; y
5 ~" T7 a" t P7 |& r
paradata=reshape(seldata,para,nd% t- Z. b& K* u4 p# _4 R
9 Q+ U6 X4 v4 \/ D; @7 f*m1);
; m7 d, B* ~+ f7 {# ~; p& ^' ^# T
/ [" {& U7 `4 V2 T/ |%QPSK调制
6 O, T) x- C; p/ u% |3 |. Y' }- x6 t5 M2 I
[ich,qch]=qpskmod(paradata,para,nd,m1);3 w: l$ r! I: `8 r# ~! r4 Q5 @9 w0 V
7 P# C0 n# _. }: \( Y1 Q1 pkmod=1/sqrt(2);
( ?6 Y+ G$ ]4 i3 O
5 h) V3 u; _, v. Y$ B% Jichl=ich.*kmod;
$ {" u0 X; f) e8 f; e% D3 X8 G$ a$ r6 Y
qchl=qch.*kmod;
5 Q T6 {, ~! e
7 @3 h i7 c& M%In叩(离散傅里叶反变换)
7 U" f& R- j4 O" w0 u/ C4 I% A
6 b; l/ Q3 N( J" B2 {& M9 kX=ichl+qchl.*i:
& `( v; C9 a) B2 v# ~, B2 M! b5 ?0 ^) `" n* Z& V$ [
y=ifft(x);
/ G$ I K% [ J" S8 e a
3 x. H+ S9 H$ ]4 w, ^. Fich2=real(y);+ V, P( A+ q% B& a, ^5 \8 A% M
9 x& _* S0 p* x! Mqch2=imag(y);
0 L q9 B- Q9 c, H2 p4 J3 U* s5 L. i( @2 Y) l8 V
%插入保护间隔( u0 P* D4 e( K: w
9 R+ B E8 ^8 @8 W
[ich3,qch3]=giins(ich2,qch2,fftlen,gilen,nd);+ \' Y. I: ?8 n. {) C
$ L$ I7 y7 Z C6 offtlen2=fftlen+gilen;
1 j, T) s+ P- V0 T! B9 {1 t- W) @8 ?, W, k+ }4 @6 B
%衰减计算, I/ g$ H4 B1 F
& I3 a6 [* q, E( D% fspow=suln(ich3.2+qch3.“2)/nd./para;. ~0 R4 ?8 I6 S6 U& h# d4 j! ?; Y
; e1 F# ?0 `3 p9 W! o1 M/ z3 u
attn=0.5*spow*sr/br*10.“(.ebn0/10);
' q: g) v' r1 a5 L' s8 N7 r
! |4 ]2 A! r+ Y. rattn=sqrt(attn);
0 m6 E3 F7 A0 g3 |1 W0 [( U5 d( v. f3 n6 ~
%高斯自信道
$ I# o% M, d9 K9 R2 i% j7 s8 L0 f- u* Z$ J5 ^
[ich4,qeh4]=eomb(ich3,qch3,attn);
5 W9 q( L3 T L: p8 f* u& H4 }7 y0 X& k; i0 J5 E' _9 U
%接收部分# y/ s) N1 I9 q
1 t$ r, M$ g* l5 ^%去除保护间隔4 H( r1 G! r% @/ \
' L) a6 b' m/ q' q: d5 G[ieh5,,qeh5]=girem(ich4,qch4,fftlen2,gilen,
. m8 I8 | z E; e7 R* n# t# q1 S4 d' H. v, \
nd);& {1 o. n- _+ D7 b
, H! P( t, o8 Z4 g- e+ C0 I1 o
%FFr(离散傅里叶变换) d9 c, R7 V" r! d6 u
8 ^4 C) n; N$ m3 q( y
IX=ich5+qch5.*i:
) W4 ^& k& s7 e2 h, } ]8 n. n4 E C
; x4 n- O6 G* x, E5 Sry=fit(Ⅸ);" g& x( T$ j" C: T- p H
4 _9 y3 m/ t, `. n1 h/ s( Gich6=real(ry);1 W H! [# x! u4 \4 I
) P; ]7 Z1 p4 ]3 s9 k: w f I+ gqch6=imag(ry);( G3 ~( f7 N# E, r8 m
1 s/ n! A( |8 T%QPSK解调+ d# K5 E4 m+ O; V' U$ n
2 U* T0 l! i! `# dieh7=ich6./kmod;
, q5 Y0 T2 [4 W. W# K9 V. W4 Q
, M: D% V5 E2 y9 F) f) P. ^qch7=qch6./kmod;
: e$ Y2 D, m* p/ H
% l% H0 M2 B8 f+ d! p# Y[derrtxtata]=qpskdemod(ich7,qch7,para,nd,m1);8 F! P- a+ h- W/ ?2 g1 ?; J2 Q6 n
8 d. ]0 f. z9 r2 N* f8 z$ `8 E
%并串变换% i# O+ e9 p) a: R
. a Z x: m0 S7 N# G3 _+ h: P7 Y0 R
demodatal=reshape(demodata,I,para*nd*rnl);
2 a1 g5 k9 y! \& e
. O+ D0 i% Q7 C9 y# v# I8 x4 y%比特误码率(BER): `$ ?+ k! Q0 A% e: |6 L
% Q- E' c7 v9 Z7 W
bit—errors=find(seldata~=demodatal);2 q: ]5 }0 c7 c; D; l: y
4 U. l. z$ S# @bit—error—count 2 size(bit—e/TOES,2);
0 h0 X, F8 \; v4 [( z% G, G9 S4 J0 ]
total—bits=size(demodatal,2);
7 {8 C1 v! U, V+ @' s; |% `7 b9 g' R' ?! T! t. o1 K& G
bit—error—rate=bit—error—count/total—bits;1 {1 v( F6 g* N' }% c, i8 r
) X8 p2 Z5 ^. l9 f
fprintf(7%f\n’,bit—eITor—rate)
l- J8 Z+ c. `+ X2 S* l$ m& a. q3 p6 _* F1 |% d: B$ A) k* D1 w6 V
%end offile& J0 Q7 U+ }8 Q: k$ B' Y7 F# T
K v6 r- s T1 A. d" Z* k
程序运行结果,输出误码率为:( p9 l9 t7 w5 g" m5 R+ Q
( K) H6 M. Y. G4 b+ {$ v5 @- s: x) M>>0.037109. W& S+ ~3 o. E$ N
|
|