|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本人菜鸟,第一次接触matlab程序画流程图,不知道该如何按照这个程序画流程图, 尤其是这个程序里用了很多for循环, 比较迷茫……麻烦大神指点一下,非常感谢!
7 s7 E, T. o: r0 N%MRC_scheme.m. W2 Y0 x+ f* W5 H
%接收分集-MRC
3 O1 R2 X9 I+ e, }" J/ Wclear,clf
' d" T( ?: t: uL_frame=130;9 B8 i4 Q1 `$ W a
N_packet=4000;%130个编码后符号,仿真4000组
w6 b1 ]) u+ ]2 N) nb=4;%设置为1/2/3/4对应于BPSK/QPSK/8PSK/16-QAM5 J- Q$ \* K3 u8 _6 D
SNRdBs=[0:2:20];
; m K& g( E4 R9 X- c! g3 Wsq2=sqrt(2);
3 l7 o8 r, i9 E5 _for iter=1:31 B4 a1 j9 w1 O3 m5 n
if iter==1& S7 s+ V$ F# x$ O" q# {+ w4 U
NT=1;08 V8 P( F9 S4 \; x0 f0 |
NR=1;%SISO$ o6 v1 U' u$ q- V' q. K
gs='-kx';; z Z0 \( O5 t3 l* v
elseif iter==2
, o, Z/ t2 X7 n NT=1;: N5 a( h$ b- \% [
NR=2;% 1发2收
0 S% |6 M+ l( n gs='-^';
$ U- k% u2 t0 O6 X else* c& `' l6 ~9 P7 t# c$ p; R" P
NT=1;
# G! F# {+ ~ d8 h/ b; l. g5 h; u NR=4;% 1发4收
; t8 d V+ h% U% R. l+ y gs='-ro';
3 R5 A4 I6 l& Y( k: j end
, Q% N2 O. A* v7 u G* Y sq_NT=sqrt(NT);8 B" J7 r2 `/ b! q' v1 d
for i_SNR=1:length(SNRdBs)
# m6 O4 [4 R. t# _6 b SNRdB=SNRdBs(i_SNR);
4 z. \* [' q, b1 E5 V' C sigma=sqrt(0.5/(10^(SNRdB/10)));%瑞利分布参数,噪声标准差2 }! h% b' C! u
for i_packet=1:N_packet
! H' m3 P& Z R7 E symbol_data=randint(L_frame*b,NT); %产生L_frame*b行NT列二进制信息% G3 u" l3 [% ^. ^# l' F! g
[temp,sym_tab,P]=modulator(symbol_data.',b);%调制! t: F+ i/ k" V. @
X=temp.';%X为调制后序列(L_frame行1列)2 d- E/ H4 L R# }6 w
Hr=(randn(L_frame,NR)+j*randn(L_frame,NR))/sq2;%瑞利信道衰落系数
3 `. p' k, u: N0 x7 Y; @$ Z H=reshape(Hr,L_frame,NR);%重置Hr行列(L_frame行NR列)/ x% L' z, C# z$ m$ ~, u4 ?- C: `7 X
Habs=sum(abs(H).^2,2);
" [3 x0 z- Y) a9 p Z=0;2 K1 x7 I7 D# O: x3 I% t1 `
for i=1:NR
" y0 _2 o; z1 V" n3 E2 ? R(:,i)=sum(H(:,i).*X,2)/sq_NT+...
) G- L/ ~' `) j- m( D6 t; s sigma*(randn(L_frame,1)+j*randn(L_frame,1)); %经过瑞利信道并加复高斯白噪声" c- ?/ V' Q) k* j: V
Z=Z+R(:,i).*conj(H(:,i));%MRC合并,合并系数为conj(H(:,i))
& P5 Z; T& M5 U; [4 S( { end" p; }8 B) K: Q( N
for m=1 %最大似然译码
8 Z+ q5 I. k/ ]% u dl(:,m)=abs(sum(Z,2)-sym_tab(m)).^2+...
C, O2 l, ^8 X$ @* |2 B( g (-1+sum(Habs,2))*abs(sym_tab(m))^2;
# Y" R7 v% t3 N4 |. U end
: q) h9 W; f5 F4 t, T [y1,i1]=min(dl,[],2);
/ @# \( [( t: b# ~ Xd=sym_tab(i1).';9 P' `4 m( p( v# A1 U
temp1=X>0;
# ~' F8 n0 u! I5 F temp2=Xd>0;
+ z* q1 T4 { |0 U4 ]2 K- f- y+ g noeb_p(i_packet)=sum(sum(temp1~=temp2));%累加错误比特
7 z* S$ _. g5 x/ ~4 W5 K end
. r( g9 ?( q& C+ U3 O0 | BER(iter,i_SNR)=sum(noeb_p)/(N_packet*L_frame*b);%计算误比特率; W; z8 I4 k' O/ ]0 n& B
end
7 ] e$ K4 m5 h0 J/ D- i1 F semilogy(SNRdBs,BER(iter, ,gs),hold on
, o( A# T b0 { axis([SNRdBs([1 end]) 0.5*10^(-4) 1e0])4 [. z! L# h4 W+ J- s2 a9 i7 ^
end
: ]. W+ b& a1 p: Q) Qtitle('BER peRFoemancde of MRC Scheme')
4 d$ ]$ h7 x5 _xlabel('SNR[dB]'),ylabel('BER')
# H' K, t9 c# ygrid on,set(gca,'fontsize',9) P0 n/ m; l/ a
legend('SISO','MRC(Tx:1,Rx:2)','MRC(Tx:1,Rx:4)'): z! p1 J% S. r2 W' n9 q
|
|