📄 prs.m
字号:
%PRS发生器,产生一个标准的PRS(with guard interval)
%注意:k',i,n等参数,都有1536个,产生的Zk也是1536个,
%下标为1-1536,中间的769号元素本来应该是0,在OFDM的时
%侯舍弃掉,不过我还是用以往的方法,求表时立即舍弃
%求k',i,n的值 matlab没有k',用k1代替
for k=1:1536
if k>=1 & k<=32
k1(k)=1;
i1(k)=0;
n(k)=1;
elseif k>=33 & k<=64
k1(k)=33;
i1(k)=1;
n(k)=2;
elseif k>=65 & k<=96
k1(k)=65;
i1(k)=2;
n(k)=0;
elseif k>=97 & k<=128
k1(k)=97;
i1(k)=3;
n(k)=1;
elseif k>=129 & k<=160
k1(k)=129;
i1(k)=0;
n(k)=3;
elseif k>=161 & k<=192
k1(k)=161;
i1(k)=1;
n(k)=2;
elseif k>=193 & k<=224
k1(k)=193;
i1(k)=2;
n(k)=2;
elseif k>=225 & k<=256
k1(k)=225;
i1(k)=3;
n(k)=3;
elseif k>=257 & k<=288
k1(k)=257;
i1(k)=0;
n(k)=2;
elseif k>=289 & k<=320
k1(k)=289;
i1(k)=1;
n(k)=1;
elseif k>=321 & k<=352
k1(k)=321;
i1(k)=2;
n(k)=2;
elseif k>=353 & k<=384
k1(k)=353;
i1(k)=3;
n(k)=3;
elseif k>=385 & k<=416
k1(k)=385;
i1(k)=0;
n(k)=1;
elseif k>=417 & k<=448
k1(k)=417;
i1(k)=1;
n(k)=2;
elseif k>=449 & k<=480
k1(k)=449;
i1(k)=2;
n(k)=3;
elseif k>=481 & k<=512
k1(k)=481;
i1(k)=3;
n(k)=3;
elseif k>=513 & k<=544
k1(k)=513;
i1(k)=0;
n(k)=2;
elseif k>=545 & k<=576
k1(k)=545;
i1(k)=1;
n(k)=2;
elseif k>=577 & k<=608
k1(k)=577;
i1(k)=2;
n(k)=2;
elseif k>=609 & k<=640
k1(k)=609;
i1(k)=3;
n(k)=1;
elseif k>=641 & k<=672
k1(k)=641;
i1(k)=0;
n(k)=1;
elseif k>=673 & k<=704
k1(k)=673;
i1(k)=1;
n(k)=3;
elseif k>=705 & k<=736
k1(k)=705;
i1(k)=2;
n(k)=1;
elseif k>=737 & k<=768
k1(k)=737;
i1(k)=3;
n(k)=2;
elseif k>=769 & k<=800
k1(k)=769;
i1(k)=0;
n(k)=3;
elseif k>=801 & k<=832
k1(k)=801;
i1(k)=3;
n(k)=1;
elseif k>=833 & k<=864
k1(k)=833;
i1(k)=2;
n(k)=1;
elseif k>=865 & k<=896
k1(k)=865;
i1(k)=1;
n(k)=1;
elseif k>=897 & k<=928
k1(k)=897;
i1(k)=0;
n(k)=2;
elseif k>=929 & k<=960
k1(k)=929;
i1(k)=3;
n(k)=2;
elseif k>=961 & k<=992
k1(k)=961;
i1(k)=2;
n(k)=1;
elseif k>=993 & k<=1024
k1(k)=993;
i1(k)=1;
n(k)=0;
elseif k>=1025 & k<=1056
k1(k)=1025;
i1(k)=0;
n(k)=2;
elseif k>=1057 & k<=1088
k1(k)=1057;
i1(k)=3;
n(k)=2;
elseif k>=1089 & k<=1120
k1(k)=1089;
i1(k)=2;
n(k)=3;
elseif k>=1121 & k<=1152
k1(k)=1121;
i1(k)=1;
n(k)=3;
elseif k>=1153 & k<=1184
k1(k)=1153;
i1(k)=0;
n(k)=0;
elseif k>=1185 & k<=1216
k1(k)=1185;
i1(k)=3;
n(k)=2;
elseif k>=1217 & k<=1248
k1(k)=1217;
i1(k)=2;
n(k)=1;
elseif k>=1249 & k<=1280
k1(k)=1249;
i1(k)=1;
n(k)=3;
elseif k>=1281 & k<=1312
k1(k)=1281;
i1(k)=0;
n(k)=3;
elseif k>=1313 & k<=1344
k1(k)=1313;
i1(k)=3;
n(k)=3;
elseif k>=1345 & k<=1376
k1(k)=1345;
i1(k)=2;
n(k)=3;
elseif k>=1377 & k<=1408
k1(k)=1377;
i1(k)=1;
n(k)=0;
elseif k>=1409 & k<=1440
k1(k)=1409;
i1(k)=0;
n(k)=3;
elseif k>=1441 & k<=1472
k1(k)=1441;
i1(k)=3;
n(k)=0;
elseif k>=1473 & k<=1504
k1(k)=1473;
i1(k)=2;
n(k)=1;
else%if k>=1505 & k<=1536
k1(k)=1505;
i1(k)=1;
n(k)=1;
end
end
%建立hi,j的矩阵,注意到matlab行列标不能为0,因此i,j自动各加1,变为第1,2,3,4,行、列
h=[0 2 0 0 0 0 1 1 2 0 0 0 2 2 1 1 0 2 0 0 0 0 1 1 2 0 0 0 2 2 1 1;
0 3 2 3 0 1 3 0 2 1 2 3 2 3 3 0 0 3 2 3 0 1 3 0 2 1 2 3 2 3 3 0;
0 0 0 2 0 2 1 3 2 2 0 2 2 0 1 3 0 0 0 2 0 2 1 3 2 2 0 2 2 0 1 3;
0 1 2 1 0 3 3 2 2 3 2 1 2 1 3 2 0 1 2 1 0 3 3 2 2 3 2 1 2 1 3 2]
%定义p(k),用来表示(hi,k-k1 +n)
for k=1:1536
p(k)=h(i1(k)+1,k-k1(k)+1)+n(k);
k=k+1;
end
%PRS的1536个信号点Zk
for k=1:1536
Zk(k)=cos(p(k)*pi/2)+sin(p(k)*pi/2)*i
end
%OFDM调制器输入端,1536个信号点,前768个和后768个互换位置
%再补上512个0,凑足2048个点的Zkf,以备ifft
for i_zk=1:2048
if i_zk<=768
Zkf(i_zk)=Zk(i_zk+768);
elseif i_zk>=1281
Zkf(i_zk)=Zk(i_zk-1280);
else Zkf(i_zk)=0;
end
end
%IFFT
Zkt=ifft(Zkf);
%adding guard interval 得到最终的信号symbol prs_t
for i_Zprs=1:2552
if i_Zprs<=504
PRS(i_Zprs)=Zkt(i_Zprs+1544);
else PRS(i_Zprs)=Zkt(i_Zprs-504);
end
i_Zprs=i_Zprs+1;
end
save('PRS.mat','PRS');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -