📄 msinterleaverinitialization.m
字号:
%==========================================================================
% MS_Interleaver_Initialization.m
%==========================================================================
%根据无线配置设置交织器的信号重复因子,符号抽取向量以及交织器的长度
%只支持RC3和RC4
switch xRC
case 3
%根据原始数据帧的长度设置的信号重复因子,信号抽取向量以及交织器长度
switch xFrameLength
case 6120
xRepetitionCount=1;
xPunctureVector=[1];
xInterleaverSize=12288;
case 3048
xRepetitionCount=1;
xPunctureVector=[1];
xInterleaverSize=12288;
case 1512
xRepetitionCount=1;
xPunctureVector=[1];
xInterleaverSize=6144;
case 744
xRepetitionCount=1;
xPunctureVector=[1];
%xInterleaverSize=3072;
m=6;
J=48;
% Even interleaved Symbol
i = [0:2:3072-2]';
x = i/2;
Aeven = 2^m*(mod(x,J))+ bi2de(de2bi(floor(x/J),m,'left-msb'),'right-msb');
% Odd interleaved Symbol
i = [1:2:3072-1]';
x= 3072 - (i+1)/2;
Aodd = 2^m*(mod(x,J))+ bi2de(de2bi(floor(x/J),m,'left-msb'),'right-msb');
int_table = reshape([Aeven Aodd]',3072,[]) + 1;
case 360
xRepetitionCount=1;
xPunctureVector=[1];
%xInterleaverSize=1536;
m=6;
J=24;
% Even interleaved Symbol
i = [0:2:1536-2]';
x = i/2;
Aeven = 2^m*(mod(x,J))+ bi2de(de2bi(floor(x/J),m,'left-msb'),'right-msb');
% Odd interleaved Symbol
i = [1:2:1536-1]';
x= 1536 - (i+1)/2;
Aodd = 2^m*(mod(x,J))+ bi2de(de2bi(floor(x/J),m,'left-msb'),'right-msb');
int_table = reshape([Aeven Aodd]',1536,[]) + 1;
case 172
%xRepetitionCount=2;
%xPunctureVector=[1];
%xInterleaverSize=1536;
m=6;
J=24;
% Even interleaved Symbol
i = [0:2:1536-2]';
x = i/2;
Aeven = 2^m*(mod(x,J))+ bi2de(de2bi(floor(x/J),m,'left-msb'),'right-msb');
% Odd interleaved Symbol
i = [1:2:1536-1]';
x= 1536 - (i+1)/2;
Aodd = 2^m*(mod(x,J))+ bi2de(de2bi(floor(x/J),m,'left-msb'),'right-msb');
int_table = reshape([Aeven Aodd]',1536,[]) + 1;
case 80
xRepetitionCount=4;
xPunctureVector=[1];
% xInterleaverSize=1536;
m=6;
J=24;
% Even interleaved Symbol
i = [0:2:1536-2]';
x = i/2;
Aeven = 2^m*(mod(x,J))+ bi2de(de2bi(floor(x/J),m,'left-msb'),'right-msb');
% Odd interleaved Symbol
i = [1:2:1536-1]';
x= 1536 - (i+1)/2;
Aodd = 2^m*(mod(x,J))+ bi2de(de2bi(floor(x/J),m,'left-msb'),'right-msb');
int_table = reshape([Aeven Aodd]',1536,[]) + 1;
case 40
xRepetitionCount=8;
xPunctureVector=[1 1 1 1 1 1 1 1 0];
%xInterleaverSize=1536;
m=6;
J=24;
% Even interleaved Symbol
i = [0:2:1536-2]';
x = i/2;
Aeven = 2^m*(mod(x,J))+ bi2de(de2bi(floor(x/J),m,'left-msb'),'right-msb');
% Odd interleaved Symbol
i = [1:2:1536-1]';
x= 1536 - (i+1)/2;
Aodd = 2^m*(mod(x,J))+ bi2de(de2bi(floor(x/J),m,'left-msb'),'right-msb');
int_table = reshape([Aeven Aodd]',1536,[]) + 1;
case 16
xRepetitionCount=16;
xPunctureVector=[1 1 1 1 0];
%xInterleaverSize=1536;
m=6;
J=24;
% Even interleaved Symbol
i = [0:2:1536-2]';
x = i/2;
Aeven = 2^m*(mod(x,J))+ bi2de(de2bi(floor(x/J),m,'left-msb'),'right-msb');
% Odd interleaved Symbol
i = [1:2:1536-1]';
x= 1536 - (i+1)/2;
Aodd = 2^m*(mod(x,J))+ bi2de(de2bi(floor(x/J),m,'left-msb'),'right-msb');
int_table = reshape([Aeven Aodd]',1536,[]) + 1;
case 24
xRepetitionCount=2;
xPunctureVector=[1];
%xInterleaverSize=384;
m=6;
J=6;
% Even interleaved Symbol
i = [0:2:384-2]';
x = i/2;
Aeven = 2^m*(mod(x,J))+ bi2de(de2bi(floor(x/J),m,'left-msb'),'right-msb');
% Odd interleaved Symbol
i = [1:2:384-1]';
x= 384 - (i+1)/2;
Aodd = 2^m*(mod(x,J))+ bi2de(de2bi(floor(x/J),m,'left-msb'),'right-msb');
int_table = reshape([Aeven Aodd]',384,[]) + 1;
otherwise
error('Error:Invalid Frame Length for Radio Configuration 3 in cdma 2000 Mobile Station block<Interleaver>');
int_table = [ ];
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -