clear, clf
L_frame=130; N_packet=4000; %130個編碼后符號,仿真4000組
b=2; % 1/2/3/4 for BPSK/QPSK/16QAM/64QAM
SNRdBs=[0:2:20]; sq2=sqrt(2);
for iter=1:3
if iter==1, NT=1; NR=1; gs='-kx'; % SISO,黑色x
elseif iter==2, NT=1; NR=2; gs='-^'; % 1發2收,倒三角
else NT=1; NR=4; gs='-ro'; % 1發4收,紅色圈
end
sq_NT=sqrt(NT);
for i_SNR=1:length(SNRdBs)
SNRdB=SNRdBs(i_SNR); sigma=sqrt(0.5/(10^(SNRdB/10))); %瑞利分布參
%數,噪聲標準差
for i_packet=1:N_packet
symbol_data=https://bbs.csdn.net/topics/randint(L_frame*b,NT); %產生L_frame*b行NT列二進制資訊
[temp,sym_tab,P]=modulator(symbol_data.',b); %調制,呼叫的函式功
%能本檔案見第二頁
X=temp.'; %X為調制后序列(L_frame行1列)
Hr = (randn(L_frame,NR)+j*randn(L_frame,NR))/sq2; %瑞利信道衰落
%系數
H = reshape(Hr,L_frame,NR); %重置Hr行列(L_frame行NR列)
Habs = sum(abs(H).^2,2);
Z=0;
for i=1:NR
R(:,i) = sum(H(:,i).*X,2)/sq_NT + sigma*(randn(L_frame,1)+j*randn(L_frame,1)); %經過信道并加復高斯白噪聲
Z = Z + R(:,i).*conj(H(:,i)); %MRC合并,合并系數為conj(H(:,i))
end
for m=1:P %最大似然譯碼
d1(:,m)=abs(sum(Z,2)-sym_tab(m)).^2+(-1+sum(Habs,2))*abs(sym_tab(m))^2;
end
[y1,i1] = min(d1,[],2); Xd=sym_tab(i1).';
temp1 = X>0; temp2 = Xd>0;
noeb_p(i_packet)=sum(sum(temp1~=temp2)); %累加錯誤位元
end
BER(iter,i_SNR) = sum(noeb_p)/(N_packet*L_frame*b); %計算誤位元率
end %回圈結束
semilogy(SNRdBs,BER(iter,:),gs), hold on, axis([SNRdBs([1 end]) 1e-6 1e0]) %畫圖
end
title('BER perfoemancde of MRC Scheme'), xlabel('SNR[dB]'), ylabel('BER')
grid on, set(gca,'fontsize',9)
legend('SISO','MRC (Tx:1,Rx:2)','MRC (Tx:1,Rx:4)')
function [mod_symbols,sym_table,M] = modulator(bitseq,b)
%MIMO-OFDM Wireless Communications with MATLAB㈢ Yong Soo Cho, Jaekwon Kim, Won Young Yang and Chung G. Kang
%?2010 John Wiley & Sons (Asia) Pte Ltd
N_bits = length(bitseq);
if b==1 % BPSK modulation
sym_table=exp(j*[0 -pi]); sym_table=sym_table([1 0]+1);
inp=bitseq; mod_symbols=sym_table(inp+1); M=2;
elseif b==2 % QPSK modulation
sym_table = exp(j*pi/4*[-3 3 1 -1]); sym_table=sym_table([0 1 3 2]+1);
inp=reshape(bitseq,b,N_bits/b);
mod_symbols=sym_table([2 1]*inp+1); M=4;
elseif b==3 % generates 8PSK symbols
sym_table=exp(j*pi/4*[0:7]); sym_table=sym_table([0 1 3 2 6 7 5 4]+1);
inp=reshape(bitseq,b,N_bits/b); mod_symbols=sym_table([4 2 1]*inp+1);
M=8;
elseif b==4 % 16-QAM modulation
m=0; sq10=sqrt(10);
for k=-3:2:3
for l=-3:2:3
m=m+1; sym_table(m) = (k+j*l)/sq10; % power normalization
end
end
sym_table = sym_table([0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10]+1); % Gray code mapping pattern for 8-PSK symbols
inp = reshape(bitseq,b,N_bits/b);
mod_symbols = sym_table([8 4 2 1]*inp+1); % maps transmitted bits into 16QAM symbols
M=16; %16 constellation points
else
error('Unimplemented modulation');
end
請問 最大似然譯碼 這段是什么原理? 求解釋
for m=1:P %最大似然譯碼
d1(:,m)=abs(sum(Z,2)-sym_tab(m)).^2+(-1+sum(Habs,2))*abs(sym_tab(m))^2;
end
uj5u.com熱心網友回復:
在這里,實際上使用ZF接識訓實作最大似然譯碼轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/21898.html
標籤:網絡通信
