⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ltable.m

📁 it is very good codes for space-time systerms
💻 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 + -