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

📄 digitrev_index.c

📁 完整的OFDM系统,含Matlab仿真代码和DSP源代码下载.平台Tms320C6000.含项目说明文档.绝对高质量的源代码.
💻 C
字号:
/***************************************************************************
 Use This Routine To Generate the Index Table for
 Bit/Digit Reversing of Radix-2 and Radix-4 Routines

 This routine calculates the index for digitrev of
 length n (length of index is 2^(radix*ceil(k/radix)) where n = 2^k
 in otherwords
 Either: sqrt(n) when n=2^even# Or: sqrt(2)*sqrt(n) when n=2^odd# [radix 2]
	     sqrt(n) when n=4^even# Or: sqrt(4)*sqrt(n) when n=4^odd# [radix 4]
 
 Note: the variable "radix" is 2 for radix-2 and 4 for radix-4

****************************************************************************/
#pragma CODE_SECTION(digitrev_index,"SBSRAM_PROG_MEM");
void digitrev_index(short *index, int n, int radix)
{
	int		i,j,k;
	short	nbits, nbot, ntop, ndiff, n2, raddiv2; 

	nbits = 0;
	i = n;	

	while (i > 1)
	{
		i = i >> 1;
		nbits++;
	}
	
	raddiv2	= radix >> 1;
	nbot	= nbits >> raddiv2;
	nbot	= nbot << raddiv2 - 1;
	ndiff	= nbits & raddiv2;
	ntop	= nbot + ndiff;
	n2		= 1 << ntop;
	
	index[0] = 0;
	for ( i = 1, j = n2/radix + 1; i < n2 - 1; i++)
	{
		index[i] = j - 1;
		for (k = n2/radix; k*(radix-1) < j; k /= radix)
			j -= k*(radix-1);
			j += k;
	}

	index[n2 - 1] = n2 - 1;
}


⌨️ 快捷键说明

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