📄 ltable.m
字号:
function [dlt,slt,md]=ltable(option,sim_options)
switch option
case '4_State_4PSK'
md=4;
s=4;
case '8_State_4PSK'
md=4;
s=8;
case '16_State_4PSK'
md=4;
s=16;
case '32_State_4PSK'
md=4;
s=32;
case '8_State_8PSK'
md=8;
s=8;
case '16_State_8PSK'
md=8;
s=16;
case '32_State_8PSK'
md=8;
s=32;
case 'DelayDiv_8PSK'
md=8;
s=8;
case '16_State_16qam'
md=16;
s=16;
case 'DelayDiv_16qam'
md=16;
s=16;
otherwise
disp('Wrong option !!');
end
% State matrix generator
base = reshape(1:s,md,s/md)';
slt = repmat(base,md,1);
load stc_bc16.txt;
% Data matrix generator
for j = 1:md
l = j - 1;
ak = bitget(l,1);
bk = bitget(l,2);
dk = bitget(l,3);
ek = bitget(l,4);
switch md
% 4 PSK
case 4 % NOTE: trace criterion option implemented as an example
for i = 1:s
k = i - 1;
ak_1 = bitget(k,1);
bk_1 = bitget(k,2);
ak_2 = bitget(k,3);
bk_2 = bitget(k,4);
ak_3 = bitget(k,5);
bk_3 = bitget(k,6);
switch s
case 4 %4state_4psk
if sim_options.RxDiv~=2
dlt(i,j,1) = mod(2 * bk_1 + ak_1,md);%rank & determinant croteria
dlt(i,j,2) = mod(2 * bk + ak,md);
else
% dlt(i,j,1) = mod(bk_1+2*ak_1+2*ak,md);%trace criterion
% dlt(i,j,2) = mod(2*bk_1+2*bk+3*ak,md);
dlt(i,j,1) = mod(2 * bk_1 + ak_1,md);%rank & determinant croteria
dlt(i,j,2) = mod(2 * bk + ak,md);
end
case 8 %8state_4psk
if sim_options.RxDiv~=2
dlt(i,j,1) = mod(2 * ak_2 + 2 * bk_1 + ak_1,md);%rank & determinant criteria
dlt(i,j,2) = mod(2 * ak_2 + 2 * bk + ak,md);
else
dlt(i,j,1)= mod(2*bk_1+2*bk+ak_1+2*ak,md); %trace criterion
dlt(i,j,2)= mod(bk_1+2*ak_2+2*bk+2*ak_1,md);
end
case 16 %16state_4psk
if sim_options.RxDiv~=2
dlt(i,j,1) = mod(2 * ak_2 + 2 * bk_1 + ak_1,md);%rank & determinant criteria
dlt(i,j,2) = mod(2 * bk_2 + 2 * ak_1 + 2 * bk + ak,md);
else
dlt(i,j,1)=mod(2*bk_3+2*ak_3+3*bk_2+3*bk_1+2*ak_1+2*ak,md); %trace criterion
dlt(i,j,2)=mod(2*bk_3+3*bk_2+bk_1+2*ak_1+2*bk+2*ak,md);
end
case 32 %32state_4psk
dlt(i,j,1) = mod(2 * ak_3 + 3 * bk_2 + 2 * ak_2 + 2 * bk_1 +...% rank & determinant criteria
ak_1,md);
dlt(i,j,2) = mod(2 * ak_3 + 3 * bk_2 + 2 * bk_1 + ak_1 + 2 *...
bk + ak,md);
end
end
% 8 PSK
case 8 % 'rank & determinant' criteria only
for i = 1:s
k = i - 1;
ak_1 = bitget(k,1);
bk_1 = bitget(k,2);
dk_1 = bitget(k,3);
ak_2 = bitget(k,4);
bk_2 = bitget(k,5);
switch s
case 8
switch option
case '8_State_8PSK'
dlt(i,j,1) = mod(4 * dk_1 + 2 * bk_1 + 5 * ak_1,md);
dlt(i,j,2) = mod(4 * dk + 2 * bk + ak,md);
case 'DelayDiv_8PSK'
dlt(i,j,1)=mod(4 * dk_1 + 2 * bk_1 + ak_1,md);
dlt(i,j,2)=mod(4 * dk + 2 * bk + ak,md);
end
case 16 %16state_8psk
dlt(i,j,1) = mod(ak_2 + 4 * dk_1 + 2 * bk_1 + 5 * ak_1,md);
dlt(i,j,2) = mod(5 * ak_2 + 4 * dk_1 + 2 * bk_1 + ak_1 + 4 *...
dk + 2 * bk + ak,md);
case 32 %32state_8psk
dlt(i,j,1) = mod(2 * bk_2 + 3 * ak_2 + 4 * dk_1 + 2 * bk_1 +...
5 * ak_1,md);
dlt(i,j,2) = mod(2 * bk_2 + 7 * ak_2 + 4 * dk_1 + 2 * bk_1 +...
ak_1 + 4 * dk + 2 * bk + ak,md);
end
end
% 16 QAM
case 16% 'rank & determinant' criteria only
for i = 1:s
k = i - 1;
ak_1 = bitget(k,1);
bk_1 = bitget(k,2);
dk_1 = bitget(k,3);
ek_1 = bitget(k,4);
switch s
case 16
switch option
case '16_State_16qam'
% Tarokh's paper "Space-Time Codes for High Data Rate Wireless Communication:
%Performance Criterion and Code Construction, IEEE Transactions on
%Inf Theory, vol. 44, No 2, March 1998 ->Fig 19
dlt(i,j,1) = stc_bc16(k + 1,1);
dlt(i,j,2) = stc_bc16(k + 1,2) - i + j;
case 'DelayDiv_16qam'
dlt(i,j,1) = mod(8 * ek_1 + 4 * dk_1 + 2 * bk_1 + ak_1,md);
dlt(i,j,2) = mod(8 * ek + 4 * dk + 2 * bk + ak,md);
end
end
end
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -