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

📄 ltable.m

📁 MIMO and VBLAST( please see the documentation)
💻 M
字号:
function [lt_data,lt_state] = ltable(md,s,varargin)%LTABLE Space-time code look-up table generator.%   [LT_DATA,LT_STATE] = LTABLE(MD,S) creates MD, S-states%   space-time code data and state look-up tables. MD corresponds%   to the number of constellation signals e.g. MD-PSK and MD-QAM.%   The summary of available designs is listed below. %%   [LT_DATA,LT_STATE] = LTABLE(MD,S,METHOD) same as above but %   with specific design METHOD. Possible values for METHOD are%   {'SpaceTime'}|'DelayDiv'|'UsrExtBlock'. When an 'UsrExtBlock'%   option is chosen an external block code definition is required.%%   Type%%      type stc_bc16.txt%%   to see how the entries in the extern file are stored.%%   [LT_DATA,LT_STATE] = LTABLE(...,'EchoOn') toggles internal%   function echo on.%%   TABLE OF AVAILABLE DESIGNS%%     #  |  MD | MODULATION | STATES |   METHOD%   -----+-----+------------+--------+-------------%     1. |  4  |    PSK     |    4   | 'SpaceTime'%     2. |  4  |    PSK     |    8   | 'SpaceTime'%     3. |  4  |    PSK     |   16   | 'SpaceTime'%     4. |  4  |    PSK     |   32   | 'SpaceTime'%     5. |  8  |    PSK     |    8   | 'SpaceTime'%     6. |  8  |    PSK     |    8   | 'DelayDiv'%     7. |  8  |    PSK     |   16   | 'SpaceTime'%     8. |  8  |    PSK     |   32   | 'SpaceTime'%     9. | 16  |    QAM     |   16   | 'SpaceTime'%    10. | 16  |    QAM     |   16   | 'DelayDiv'%    11. | 16  |    QAM     |   16   | 'UsrExtBlock'%%   See also DISPDES, SPACE.%   Copyright 2001-2002 Kamil Anis, anisk@feld.cvut.cz%   Dept. of Radioelectronics, %   Faculty of Electrical Engineering%   Czech Technical University in Pragu%   $Revision: 2.0 $  $Date: 2002/10/23 17:33:28 $%   --%   <additional stuff should go here>ie = isempty(varargin);switch iecase 1  method = 'SpaceTime'; % default design methodcase 0	switch varargin{1}	case 'EchoOn'		method = 'SpaceTime'; % default design method	otherwise		method = varargin{1};	endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% BODY BEGIN %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% State matrix generatorbase = reshape(1:s,md,s/md)';lt_state = repmat(base,md,1);% Data matrix generator% block code of 16QAMload stc_bc16.txt;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		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				lt_data(i,j,1) = mod(2 * bk_1 + ak_1,md);				lt_data(i,j,2) = mod(2 * bk + ak,md);			case 8				lt_data(i,j,1) = mod(2 * ak_2 + 2 * bk_1 + ak_1,md);				lt_data(i,j,2) = mod(2 * ak_2 + 2 * bk + ak,md);			case 16				lt_data(i,j,1) = mod(2 * ak_2 + 2 * bk_1 + ak_1,md);				lt_data(i,j,2) = mod(2 * bk_2 + 2 * ak_1 + 2 * bk + ak,md);            			case 32				lt_data(i,j,1) = mod(2 * ak_3 + 3 * bk_2 + 2 * ak_2 + 2 * bk_1 +...					ak_1,md);				lt_data(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		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 method				case 'SpaceTime'					lt_data(i,j,1) = mod(4 * dk_1 + 2 * bk_1 + 5 * ak_1,md);					lt_data(i,j,2) = mod(4 * dk + 2 * bk + ak,md);                  case 'DelayDiv'					lt_data(i,j,1)=mod(4 * dk_1 + 2 * bk_1 + ak_1,md);					lt_data(i,j,2)=mod(4 * dk + 2 * bk + ak,md);				end							case 16				lt_data(i,j,1) = mod(ak_2 + 4 * dk_1 + 2 * bk_1 + 5 * ak_1,md);				lt_data(i,j,2) = mod(5 * ak_2 + 4 * dk_1 + 2 * bk_1 + ak_1 + 4 *...          dk + 2 * bk + ak,md);			case 32				lt_data(i,j,1) = mod(2 * bk_2 + 3 * ak_2 + 4 * dk_1 + 2 * bk_1 +...          5 *	ak_1,md);				lt_data(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		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 method				case 'SpaceTime'					lt_data(i,j,1) = mod(8 * ek_1 + 4 * dk_1 + 2 * bk_1 + 11 *...            ak_1,md);					lt_data(i,j,2) = mod(16 * ek_1 + 16 * dk_1 + 16 * bk_1 + 16 *...						ak_1 + 8 * ek + 4 * dk + 2 * bk + ak,md);                case 'DelayDiv'					lt_data(i,j,1) = mod(8 * ek_1 + 4 * dk_1 + 2 * bk_1 + ak_1,md);					lt_data(i,j,2) = mod(8 * ek + 4 * dk + 2 * bk + ak,md);                  case 'UsrExtBlock'					lt_data(i,j,1) = stc_bc16(k + 1,1);					lt_data(i,j,2) = stc_bc16(k + 1,2) - i + j;				end			end		end	endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% BODY END %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if isempty(varargin) == 0	switch varargin{end}	case 'EchoOn'		[indent,gap,name] =  iprompt('LTABLE:');				str1 = num2str(md);		str2 = num2str(s);				if (md == 4) | (md == 8)            str3 = 'PSK';		else            str3 = 'QAM';		end				disp(' ');		disp([name,gap,'Look-up tables for ',method,' code ',str1,str3,', ',...        str2,'-states created.']);		disp(' ');	endend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -