移动通信原理课程设计报告一、题目描述仿真一:M=1,选定BPSK调制,AWGN和瑞利信道下的误符号率性能曲线(横坐标为符号信噪比Es/N0),并与相应的理论曲线比较。
仿真二:对2发1收的STBC-MIMO系统(Alamouti空时码),分析2发射天线分别受到独立瑞利信道下的误码率性能曲线,并与相同条件下单天线曲线进行对比分析。
二、系统设置三、仿真代码3.1算法说明1、信号产生:利用Matlab中的随机整数随机数产生函数randi.2、调制方法的实现:不同的调制方式对应唯一的一个星座图;通过输入序列找出星座图上的对应位置,即可输出调制结果。
3、信道模拟实现方法:AWGN信道用MATLAB自带函数randn实现,对应平均噪声功率为零;瑞利信道用randn+j*randn,对应平均噪声功率为零。
4、误码率性能曲线:发射信号序列长度设定130比特,仿真4000次,使信噪比在[0,30]每隔2取值,求平均误比特率。
5、收发系统的实现方法:对于单发单收的模型,只需将发送信号加噪声信号即为接收信号;对于二发一收的模型,因为发射天线是相互独立的,所以每根发射天线的接收信号与单发单收模型的接收信号计算方法相同,最后采用最大比合并得到接收信号。
6、调制方式:BPSK7、编码和译码方法:二发一收空时编码,最大似然译码。
8、误码率的计算:错误比特数/传输的总比特数。
3.2仿真代码代码一:调制函数function[mod_symbols,sym_table,M]=modulator(bitseq,b)N_bits=length(bitseq);if b==1 %BPSK调制sym_table=exp(1i*[0,-pi]);sym_table=sym_table([1 0]+1);inp=bitseq;mod_symbols=sym_table(inp+1);M=2;elseif b==2 %QPSK调制sym_table=exp(1i*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 %8PSK调制sym_table=exp(1i*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 %16QAM调制m=0;sq10=sqrt(10);for k=-3:2:3for l=-3:2:2m=m+1;sym_table(m)=(k+1i*l)/sq10;endendsym_table=sym_table(...[0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10]+1);inp=reshape(bitseq,b,N_bits/b);mod_symbols=sym_table([8 4 2 1]*inp+1);M=16;elseerror('unimplemented modulation');end代码二:单发单收系统在高斯信道和瑞利信道下的仿真clear allL_frame=130; N_packet=4000;b=1; % Set to 1/2/3/4 for BPSK/QPSK/8PSK/16QAMSNRdBs=[0:2:30]; sq2=sqrt(2);NT=1;NR=1;% SISOfor i_SNR=1:length(SNRdBs)SNRdB=SNRdBs(i_SNR);sigma=sqrt(0.5/(10^(SNRdB/10)));for i_packet=1:N_packetsymbol_data=randi([0 1],L_frame*b,NT);[temp,sym_tab,P]=modulator(symbol_data.',b);X=temp.‘; % frlg=length(X), X为调制后的信号序列 Hr = (randn(L_frame,1)+1i*randn(L_frame,1))/sq2 ;%Rayleigh Channel,见原理说明6.1Ha=randn(L_frame,1); %AWGN channelZ1=0;R1=Hr.*X+ sigma*(randn(L_frame,1)+1i*randn(L_frame,1));Z1=Z1+R1.*conj(Hr);R2=X+sigma*Ha;for m=1:Pd1(:,m)=abs(Z1-sym_tab(m)).^2; %最大似然译码d2(:,m)=abs(R2-sym_tab(m)).^2;end[y1,i1] = min(d1,[],2);Xd=sym_tab(i1).';[y2,i2]=min(d2,[],2);Xa=sym_tab(i2).';temp1 = X>0; temp2 = Xd>0;temp3=Xa>0;noeb_p1(i_packet)=sum(sum(temp1~=temp2));noeb_p2(i_packet)=sum(sum(temp1~=temp3));endBER1(i_SNR)=sum(noeb_p1)/(N_packet*L_frame*b);BER2(i_SNR)=sum(noeb_p2)/(N_packet*L_frame*b);SNRw=10^(SNRdB/10);BER3(i_SNR)=1/2*erfc(sqrt(SNRw));%theoretical BER in AWGN channel BER4(i_SNR)=1/2*(1-sqrt(SNRw/(1+SNRw)));endsemilogy(SNRdBs,BER1,'-rx'), hold on, axis([SNRdBs([1 end]) 1e-6 1e0]) semilogy(SNRdBs,BER2,'-ro'), hold on, axis([SNRdBs([1 end]) 1e-6 1e0]) semilogy(SNRdBs,BER3,'-^'), hold on, axis([SNRdBs([1 end]) 1e-6 1e0]) semilogy(SNRdBs,BER4,'-g*'), hold on, axis([SNRdBs([1 end]) 1e-6 1e0]) title(‘BER perfoemancde of AWGN and Rayleigh channel'),xlabel('SNR[dB]'), ylabel('BER')grid on, set(gca,'fontsize',9)legend('Rayleigh practice','AWGN practice','AWGNtheoretical','Rayleigh theoretical')代码三:二发一收系统空时编码仿真算法流程图:%Alamounti_scheme.mclear;N_frame=130;N_packets=4000;NT=2;NR=1; %two transmitter and one reciever diversityb=2;SNRdbs=[0:2:30];sq_NT=sqrt(NT);sq2=sqrt(2);for i_SNR=1:length(SNRdbs)SNRdb=SNRdbs(i_SNR);sigma=sqrt(0.5/(10^(SNRdb/10)));for i_packet=1:N_packetsmsg_symbol=randi([0 1],N_frame*b,NT);tx_bits=msg_symbol.';tmp=[];tmp1=[];for i=1:NT[tmp1,sym_tab,P]=modulator(tx_bits(i,:),b);tmp=[tmp;tmp1];endX=tmp.';%pay attention to the matrix dimension%space-time codingX1=X;X2=[-conj(X(:,2)) conj(X(:,1))];%channel known by receiverfor n=1:NTHr(n,:,:)=(randn(N_frame,NT)+1i*randn(N_frame,NT))/sq2;endH=reshape(Hr(n,:,:),N_frame,NT);%receive signalR1=sum(H.*X1,2)/sq_NT+sigma*(randn(N_frame,1)+1i*randn(N_frame,1));R2=sum(H.*X2,2)/sq_NT+sigma*(randn(N_frame,1)+1i*randn(N_frame,1));%MLD decoder,见原理6.2说明Z1=R1.*conj(H(:,1))+conj(R2).*H(:,2);Z2=R1.*conj(H(:,2))-conj(R2).*H(:,1);for m=1:Pd1(:,m)=abs(sum(Z1,2)-sym_tab(m)).^2;d2(:,m)=abs(sum(Z2,2)-sym_tab(m)).^2;end[y1,i1]=min(d1,[],2);S1d=sym_tab(i1).';clear d1[y2,i2]=min(d2,[],2);S2d=sym_tab(i2).';clear d2Xd=[S1d S2d];tmp1=X>0;tmp2=Xd>0;noeb_p(i_packet)=sum(sum(tmp1~=tmp2));endBER(i_SNR)=sum(noeb_p)/(N_packets*N_frame*b); endsemilogy(SNRdbs,BER,'-^');axis([SNRdbs([1 end]) 1e-6 1e0]) grid on, hold onxlabel('SNR[db]'),ylabel('BER');四、仿真图图(1)图(2)五、仿真分析5.1题目一:由图(1)AWGN 和瑞利信道下的误符号率性能曲线与相应的理论曲线基本重合,且AWGN 性能强于瑞利信道。