📄 midamble.m
字号:
function G=midamble(mp0,Kmax,K) %basic midamble code:mp0(字符型);maximum Users number:Kmax;actual Users number:K.
mp1=HexToBinary(mp0); % %将输入的16进制数组(字符型)转换成为二进制数组b,一位十六进制对应于四位二进制
for i=1:(length(mp1))
if mp1(i)==0,
mp1(i)=-1;
end;
end;
%mp1=[1, -1, 1, 1 ,-1, -1, 1, -1,1, -1, 1, -1 ,1, 1, -1, -1 ,-1 ,1 ,
%-1 ,-1, -1,-1,1 ,-1, -1,-1,-1,-1,1 ,1 ,1 ,1, -1, 1, 1, 1,1 ,1 ,
%-1,-1,1, -1,-1, -1,1, 1, -1, 1,1 ,1 ,1 ,-1,1 ,-1 ,1, 1,1 ,1 ,1,
%1,1 ,-1,1 ,-1,-1, 1, 1 ,-1,1,-1, -1, 1,-1, 1 ,-1 ,1,-1, -1, -1,
% -1, -1,1 ,-1,1,1 ,-1, -1, 1,1, -1 ,-1,-1,-1,-1,-1,1, 1 ,-1,1 ,
%1,1, 1,-1,-1,1, 1 ,-1,1,-1,-1,-1,-1,-1,-1,1 ,-1,1 ,-1,-1,-1,1, 1 ,-1,-1,-1 ,-1,1 ,1];
%mp1为基本的midamble码,mp0=['B2AC420F7C8DEBFA69505981BCD028C3']
%(1)旋转:生成midamble码前首先要对基本midamble码进行旋转,得到复数型的midamble序列mp :当采用QPSK的调制方式时训练序列需要转换为复数形式
p=length(mp1);
if ~(p==128),
error('The basic midamble code is wrong !')
end;
%Kmax=16:the maximum number of users that the system can support.
if K>Kmax,
error('the system can not support this number of users')
end;
for n=1:p
mp(n)=((j)^n)*mp1(n);
end;
%周期拓展:得到m序列后要对它进行周期性的拓展,使其长度达到Lm+(K-1)W。Lm是时隙中midamble的长度,为144;
%K=2,4,6,8,10,12,14,16,标志了一个小区中可以使用的midamble序列的最大个数;W是P/K的整数部分,信道估计的窗长 ;P是基本midamble序列的长度,为128
if K<=8,
W=16;
else W=8;
end;
Lm=144;
imax=Lm+(K-1)*W;
for i=1:p
m(i)=mp(i);
end;
for i=1:(imax-p)
m(p+i)=m(i);
end;%循环扩展到imax位
%下面划分K个Users
for k=1:K
for i=1:Lm
mp2((k-1)*Lm+i)=m(i+((K-k)*W));
end;
end;
%现在已经得到了K个User的码字,第k个User的码字为mp1(k).每个User的码字作为G(L*K)矩阵的一列共有K列。
for l=1:Lm
for k=1:K
G(l,k)=mp2((l-1)*K+k);
end;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -