电子科大移动通信原理课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
移动通信原理课程设计报告
一、题目描述
仿真一: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、调制方式:BPSK
7、编码和译码方法:二发一收空时编码,最大似然译码。
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:3
for l=-3:2:2
m=m+1;
sym_table(m)=(k+1i*l)/sq10;
end
end
sym_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;
else
error('unimplemented modulation');
end
代码二:单发单收系统在高斯信道和瑞利信道下的仿真
clear all
L_frame=130; N_packet=4000;
b=1; % Set to 1/2/3/4 for BPSK/QPSK/8PSK/16QAM
SNRdBs=[0:2:30]; sq2=sqrt(2);
NT=1;
NR=1;% SISO
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=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.1
Ha=randn(L_frame,1); %AWGN channel
Z1=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:P
d1(:,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));
end
BER1(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)));
end
semilogy(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','AWGN
theoretical','Rayleigh theoretical')
代码三:二发一收系统空时编码仿真
算法流程图:
%Alamounti_scheme.m
clear;
N_frame=130;
N_packets=4000;
NT=2;
NR=1; %two transmitter and one reciever diversity
b=2;
SNRdbs=[0:2:30];