clear all;
% close all;
clc;
rand('seed',0);
randn('seed',0);
SNR_array = 0:3:21;
N_FFT=64; %FFT点数
N_SYMBOL=2;
N_BPSC=2; %映射选择, 2:QPSK
RATE=1/3; %编码码率,
Multipath=6; %多径条数
Tx=2; %发射天线 二者相等
Rx=2; %接收天线
CyclicNum=16; %前缀长度
PACKET=1000; %包数
DecodeDepth=28; %译码深度
Interleave_Length=16; %交织深度
Code_Zero=6; %编码补零
%开关标记
BIT_RANDN = 1; % 0:全0序列;1:随机序列
CHANNEL_ESTI=0; %1时加SVD;0时不加
GAUSS_NOISE = 1; %1时加噪声,0不加
CODE=0; %1时编码;0时不加
INTERLEAVE=0; %1时交织;0时不加
CHANNEL_flag=2; %CHANNEL_flag= 1:AWGN;2:平衰落;3:多径
CODE_UNQUANT=0; %1:unquant方式译码,不做解映射,直接译码
EST_CHANNEL = 1; % 1:加训练序列,做信道估计
EST_MODE = 3; % 1:LMMSE;2:频域LS;3:时频精估计;4:角度域估计
CORRE_CHANNEL = 0.2; % 0:i.i.d; 0<rou<1: 相关信道
if CODE==0
N=N_BPSC*N_SYMBOL*N_FFT; %每根天线上每包中的码元个数(N_FFT)
else
if floor(N_BPSC*RATE)==N_FFT*RATE
N=(N_FFT*N_SYMBOL)*N_FFT*RATE-Code_Zero; %每根天线上每包中的码元个数(N_CBPS的整数倍)
else
N=floor(N_FFT*N_SYMBOL*N_FFT*RATE)-Code_Zero;
end
end
global STRU; %卷积码生成矩阵
global INTERLEAVE_TABLE; %交织映射表
global AddZero; %编码后补零个数
for SNR_i = 1:length(SNR_array)
SNR = SNR_array(SNR_i)
for Packet = 1:PACKET
X_bit=BitGenerate(N,Tx,CODE,Code_Zero, BIT_RANDN);
X_code=code(X_bit,RATE,CODE,N_FFT);
X_interleave=interleave(X_code,INTERLEAVE,Interleave_Length);
X_map=modulation(X_interleave,N_BPSC);
H=Channel(Multipath,Tx,Rx,CHANNEL_flag, CORRE_CHANNEL); %信道产生,信道已经归一化
if CHANNEL_ESTI==1
X_SVD=TxSVD(X_map,H,N_FFT);
else
X_SVD=X_map;
end
X_IFFT=IFFT(X_SVD,N_FFT);
X_Cycle=cycle(X_IFFT,CyclicNum); %加前缀后,即是发送数据(二维矩阵)
X_Pre = AddPreamble(X_Cycle, EST_CHANNEL, N_FFT);
Y=AddChannel(X_Pre,H,GAUSS_NOISE,SNR); %加信道(多径、白高斯噪声)
if EST_CHANNEL == 1
[Est_H, Yin, MSE_Ave] = ChanEsti(Y, EST_MODE, H);
else
Yin = Y;
MSE_Ave=0;
for i=1:Rx
for j=1:Tx
Est_H(i,j,:)=fft(H(i,j,:),N_FFT);
end
end
end
Y_Noncycle=noncycle(Yin,CyclicNum,N_FFT); %去拖尾,去前缀
Y_FFT=FFT(Y_Noncycle); %FFT后,再经过并串转换后
if CHANNEL_ESTI==1
X_Esti=SVD_Rx(Y_FFT,N_FFT,Tx,H,GAUSS_NOISE,SNR,CODE_UNQUANT); %Y乘以U'后,再进行MMSE检测,得到的是对调制后信号的估计
else
X_Esti=Lmmse(Y_FFT,N_FFT,Est_H,GAUSS_NOISE,SNR);
end
if CODE_UNQUANT==0
X_Demap=Demodulation(X_Esti,N_BPSC);
X_Deinterleave=deinterleave(X_Demap,INTERLEAVE,Interleave_Length,CODE_UNQUANT);
X_Decode=decode(X_Deinterleave,RATE,CODE,DecodeDepth,CODE_UNQUANT); %X_Decode与X_bit对应
else
X_Demap=X_Esti;
X_Deinterleave=deinterleave(X_Demap,INTERLEAVE,Interleave_Length,CODE_UNQUANT);
X_Decode=decode(X_Deinterleave,RATE,CODE,DecodeDepth,CODE_UNQUANT);
end
MSE(Packet) = MSE_Ave;
BER(Packet)=countBER(X_Decode,X_bit,N);
% BER_PerRx(Packet,:)=countBER_PerRx(X_Decode,X_bit);
end
FinalMSE(SNR_i) = sum(MSE)/PACKET;
BERaverage(SNR_i)=sum(BER)/PACKET;
end
Matlab科研辅导帮
- 粉丝: 3w+
- 资源: 7813
最新资源
- 黑田精工滚珠丝杠内页1-156.pdf
- 西班牙柯尔特技术资料.pdf
- 台湾ABBA滚珠丝杠产品样本.pdf
- 丝杆_台湾银泰C_Precision_BS.pdf
- 王冲 231401180.zip
- VID_20250102_125915.mp4
- 机械设计制糖压平机sw18非常好的设计图纸100%好用.zip
- 3afc0c4129e46b95f2ebb2ed8cbafc0c_1735789077661_7
- 汇川PLC编写,设备状态机的实现以及实际案例使用,针对设备的多种状态进行区分,有单独状态和叠加态的实现方式
- 湖南科技大学数据库课程实验报告 题目一:学生信息管理系统
- 风光并网对电网电能质量的影响仿真建模 matlab simulink 在模型中主要体现的就是不同容量的光伏、风电接入,对并网点的电压影响情况 考虑到我国的地理因素以及气候影响问题,我国的风电开
- 机械设计转盘压合机sw18非常好的设计图纸100%好用.zip
- 机械结构动态图-材料力学.zip
- 机械结构动态图-摆盘机构天花板风扇等.zip
- 机械结构动态图-300例机械传动装置.zip
- 机械结构动态图-常见的包装方式.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈