clc;
clear;
close all;
warning off;
addpath 'func\'
addpath 'func\modulation\'
addpath 'func\estmation\'
addpath 'func\cp\'
addpath 'func\LTEC\'
addpath 'func\precodeing\'
P = [-10:5:15];
for jj = 1:length(P);
Ps = sqrt(10^(P(jj)/20));
Tx_n = 4;
Rx_n = 4;
%整体信噪比
SNR = 5;
Nfft = 1024;
Nid = 17;
Sym_Len = 7;
CP_length = 144;
CPNfft = Nfft+CP_length;
for y=1:10
y
jj
noise = SNR;
N0 = 10^(-noise/10);
%SNR转换为sigma
sigmas = 10^(-SNR/20);
%产生信道估计所用的测试信号,功能类似导频
[subframe,data_v,data_v0,data_v1,data_v2,data_v3] = func_data_gen(Tx_n,Rx_n,Sym_Len,Nid);
number_length = length(find(subframe == 0));
%IFFT
data_ifft1 = zeros(Nfft,2*Sym_Len);
data_ifft2 = zeros(Nfft,2*Sym_Len);
data_ifft3 = zeros(Nfft,2*Sym_Len);
data_ifft4 = zeros(Nfft,2*Sym_Len);
for i=1:2*Sym_Len
data_ifft1(:,i) = ifft(data_v0(:,i),Nfft);
data_ifft2(:,i) = ifft(data_v1(:,i),Nfft);
data_ifft3(:,i) = ifft(data_v2(:,i),Nfft);
data_ifft4(:,i) = ifft(data_v3(:,i),Nfft);
end
%插入CP
WithCP_sequence1 = zeros(CPNfft,2*Sym_Len);
WithCP_sequence2 = zeros(CPNfft,2*Sym_Len);
WithCP_sequence3 = zeros(CPNfft,2*Sym_Len);
WithCP_sequence4 = zeros(CPNfft,2*Sym_Len);
for i=1:2*Sym_Len
WithCP_sequence1(:,i) = func_CP_In(data_ifft1(:,i).',CP_length);
WithCP_sequence2(:,i) = func_CP_In(data_ifft2(:,i).',CP_length);
WithCP_sequence3(:,i) = func_CP_In(data_ifft3(:,i).',CP_length);
WithCP_sequence4(:,i) = func_CP_In(data_ifft4(:,i).',CP_length);
end
T1=reshape(WithCP_sequence1,1,CPNfft*2*Sym_Len);
T2=reshape(WithCP_sequence2,1,CPNfft*2*Sym_Len);
T3=reshape(WithCP_sequence3,1,CPNfft*2*Sym_Len);
T4=reshape(WithCP_sequence4,1,CPNfft*2*Sym_Len);
[r1,channel_impulse1,delay_number1,tap_delay1]=func_LTEChan(T1,'EPA');
[r2,channel_impulse2,delay_number2,tap_delay2]=func_LTEChan(T2,'EPA');
[r3,channel_impulse3,delay_number3,tap_delay3]=func_LTEChan(T3,'EPA');
[r4,channel_impulse4,delay_number4,tap_delay4]=func_LTEChan(T4,'EPA');
[r5,channel_impulse5,delay_number5,tap_delay5]=func_LTEChan(T1,'EPA');
[r6,channel_impulse6,delay_number6,tap_delay6]=func_LTEChan(T2,'EPA');
[r7,channel_impulse7,delay_number7,tap_delay7]=func_LTEChan(T3,'EPA');
[r8,channel_impulse8,delay_number8,tap_delay8]=func_LTEChan(T4,'EPA');
R1 = (r1+r2+r3+r4);
R2 = (r5+r6+r7+r8);
%sigmas
a = Ps*R1*sqrt(Nfft) + sigmas*randn(size(R1));
b = Ps*R2*sqrt(Nfft) + sigmas*randn(size(R2));
noise1 = a/sqrt(Nfft)-R1;
noise2 = b/sqrt(Nfft)-R2;
R1 = a/sqrt(Nfft);
R2 = b/sqrt(Nfft);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%去CP
WithCP_sequence_1 = reshape(R1,CPNfft,2*Sym_Len);
WithCP_sequence_2 = reshape(R2,CPNfft,2*Sym_Len);
NoCP_sequence1 = zeros(2*Sym_Len,Nfft);
NoCP_sequence2 = zeros(2*Sym_Len,Nfft);
for i=1:2*Sym_Len
NoCP_sequence1(i,:) = func_CP_del(WithCP_sequence_1(:,i),CP_length);
NoCP_sequence2(i,:) = func_CP_del(WithCP_sequence_2(:,i),CP_length);
end
NoCP_sequence1=NoCP_sequence1.';
NoCP_sequence2=NoCP_sequence2.';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%FFT
FFTed1=zeros(Nfft,2*Sym_Len);
FFTed2=zeros(Nfft,2*Sym_Len);
for i=1:2*Sym_Len
FFTed1(:,i)=fft(NoCP_sequence1(:,i));
FFTed2(:,i)=fft(NoCP_sequence2(:,i));
end
%信道估计
[MH10,MH11,MH12,MH13] = func_channel_estmation(FFTed1,0,Nid,1,Tx_n,Sym_Len,Rx_n);
[MH20,MH21,MH22,MH23] = func_channel_estmation(FFTed2,0,Nid,1,Tx_n,Sym_Len,Rx_n);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%信道估计之后开始在正式的链路的仿真%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%产生随机信号
Din1 = double(rand(1,number_length*2)>=0.5);
Din2 = double(rand(1,number_length*2)>=0.5);
%调制
Din_mod1 = func_QPSK(Din1);
Din_mod2 = func_QPSK(Din2);
%码本选择
for i=1:Tx_n*Rx_n*2*Sym_Len
H = [MH10(i) MH11(i) MH12(i) MH13(i);MH20(i) MH21(i) MH22(i) MH23(i)];
[R,snr] = func_codebookselect(H,N0);
r_withRS(i) = R;
end
r = func_rs_del(Tx_n,r_withRS,0,Nid,1,Sym_Len,Rx_n);
%预编码
[copreding0,copreding1,copreding2,copreding3] = func_Precoding(Din_mod1,Din_mod2,r);
%VRB
k=1;
for i=1:length(subframe)
if data_v(i)==0
data_v0(i)=copreding0(k);
data_v1(i)=copreding1(k);
data_v2(i)=copreding2(k);
data_v3(i)=copreding3(k);
k=k+1;
end
end
IFFTed0_2nd=zeros(Nfft,2*Sym_Len);
IFFTed1_2nd=zeros(Nfft,2*Sym_Len);
IFFTed2_2nd=zeros(Nfft,2*Sym_Len);
IFFTed3_2nd=zeros(Nfft,2*Sym_Len);
for i=1:2*Sym_Len
IFFTed0_2nd(:,i)=ifft(data_v0(:,i),Nfft);
IFFTed1_2nd(:,i)=ifft(data_v1(:,i),Nfft);
IFFTed2_2nd(:,i)=ifft(data_v2(:,i),Nfft);
IFFTed3_2nd(:,i)=ifft(data_v3(:,i),Nfft);
end
%加CP
WithCP_sequence0_2nd=zeros(CPNfft,2*Sym_Len);
WithCP_sequence1_2nd=zeros(CPNfft,2*Sym_Len);
WithCP_sequence2_2nd=zeros(CPNfft,2*Sym_Len);
WithCP_sequence3_2nd=zeros(CPNfft,2*Sym_Len);
for i=1:2*Sym_Len
WithCP_sequence0_2nd(:,i)=func_CP_In(IFFTed0_2nd(:,i).',CP_length);
WithCP_sequence1_2nd(:,i)=func_CP_In(IFFTed1_2nd(:,i).',CP_length);
WithCP_sequence2_2nd(:,i)=func_CP_In(IFFTed2_2nd(:,i).',CP_length);
WithCP_sequence3_2nd(:,i)=func_CP_In(IFFTed3_2nd(:,i).',CP_length);
end
T0_2nd=reshape(WithCP_sequence0_2nd,1,CPNfft*2*Sym_Len);
T1_2nd=reshape(WithCP_sequence1_2nd,1,CPNfft*2*Sym_Len);
T2_2nd=reshape(WithCP_sequence2_2nd,1,CPNfft*2*Sym_Len);
T3_2nd=reshape(WithCP_sequence3_2nd,1,CPNfft*2*Sym_Len);
[r1_2nd]=func_LTEChannel2(T0_2nd,channel_impulse1,delay_number1,tap_delay1);
[r2_2nd]=func_LTEChannel2(T1_2nd,channel_impulse2,delay_number2,tap_delay2);
[r3_2nd]=func_LTEChannel2(T2_2nd,channel_impulse3,delay_number3,tap_delay3);
[r4_2nd]=func_LTEChannel2(T3_2nd,channel_impulse4,delay_number4,tap_delay4);
[r5_2nd]=func_LTEChannel2(T0_2nd,channel_impulse5,delay_number5,tap_delay5);
[r6_2nd]=func_LTEChannel2(T1_2nd,channel_impulse6,delay_number6,tap_delay6);
[r7_2nd]=func_LTEChannel2(T2_2nd,channel_impulse7,delay_number7,tap_delay7);
[r8_2nd]=func_LTEChannel2(T3_2nd,channel_impulse8,delay_number8,tap_delay8);
R1_2nd=r1_2nd+r2_2nd+r3_2nd+r4_2nd;
R2_2nd=r5_2nd+r6_2nd+r7_2nd+r8_2nd;
a = Ps*R1_2nd*sqrt(Nfft) + sigmas*randn(size(R1));
b = Ps*R2_2nd*sqrt(Nfft) + sigmas*randn(size(R2));
R1_2nd=a/sqrt(Nfft);
R2_2nd=b/sqrt(Nfft);
%去CP
WithCP_sequence_1_2nd=reshape(R1_2nd,CPNfft,2*Sym_Len);
WithCP_sequence_2_2nd=reshape(R2_2nd,CPNfft,2*Sym_Len);
NoCP_sequence1_2nd=zeros(14,Nfft);
NoCP_sequence2_2nd=zeros(14,Nfft);
for i=1:2*Sy
没有合适的资源?快使用搜索试试~ 我知道了~
LTE预编码系统的误码率仿真
共20个文件
m:19个
mat:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 2 下载量 124 浏览量
2022-03-17
02:47:05
上传
评论
收藏 12KB RAR 举报
温馨提示
LTE预编码系统的误码率仿真,完整系统,包括IFFT,FFT,加入CP,LTE信道模型,信道估计,预编码,VRB,均衡, R=[input1 input2].'; Hw=H*W; G=inv(Hw'*Hw+N0*eye(2))*Hw'; % G=inv(Hw'*Hw)*Hw'; y=G*R; output1=0; output2=0; output1=y(1); output2=y(2); out1=output1; out2=output2;
资源推荐
资源详情
资源评论
收起资源包目录
新建文件夹.rar (20个子文件)
新建文件夹
func
cp
func_CP_In.m 274B
func_CP_del.m 359B
modulation
func_QPSK.m 442B
func_DQPSK.m 324B
func_error.m 243B
LTEC
func_LTEChan.m 770B
func_LTEChannel2.m 516B
func_LTEModel.m 798B
func_LTEMultipath.m 2KB
estmation
func_rs_mapping.m 3KB
func_Equ.m 3KB
func_channel_estmation.m 9KB
func_data_gen.m 890B
precodeing
func_rs_del.m 617B
func_rs_seq.m 1KB
func_codebookselect.m 2KB
func_gold_seq.m 1KB
func_Precoding.m 2KB
tops.m 10KB
r1.mat 266B
共 20 条
- 1
资源评论
- weixin_539753012022-11-26资源使用价值高,内容详实,给了我很多新想法,感谢大佬分享~
- weixin_418448982024-01-27终于找到了超赞的宝藏资源,果断冲冲冲,支持!
fpga和matlab
- 粉丝: 15w+
- 资源: 2548
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功