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

📄 lmseq.c

📁 在linux系统下开发研究移动通信的工具型代码
💻 C
字号:
/* * $Log: lmseq.c,v $ * Revision 1.1  2000/05/03 14:30:04  bjc97r * Initial revision * */char *_lmseq_id = "$Id: lmseq.c,v 1.1 2000/05/03 14:30:04 bjc97r Exp $";#include <stdio.h>#include <stdlib.h>#include <string.h>#include "lmseq.h"#include "u2long.h"/* * lmseq_create() differs from mseq_create() in that it can handle * higher order generator polynomials up to 63. * The polynomial should be given by the octal representation of it, * for example, lmseq = lmseq_create( 40, "020000012000005", 0, 1 ). * seed1 corresponds to upper 32bits and seed0 lower 32bits  * as the initial state of the PN registers. */LMseq * lmseq_create( unsigned deg, char * poly,		      unsigned long seed1, unsigned long seed0  ){  LMseq * lmseq;  u2long poly0;  if ( deg > 63 ) {    fprintf(stderr, "lmseq_create: ..cannot handle deg > 63\n");    return NULL;  }  lmseq = (LMseq *) malloc( sizeof(LMseq) );  lmseq->state0 = seed0;  lmseq->state1 = seed1;  poly0 = strtou2long( poly );  u2long_rshift( &poly0, 1 );  lmseq->mask0 = poly0.l;  lmseq->mask1 = poly0.h;  return lmseq;}/* lmseq_free() deallocates the memory space for the m-sequence generator. */void lmseq_free( LMseq * id ){  free( (void*) id );}/* * lmseq() gives the next m-sequence bit of the m-sequence generator. * The generated bit is unipolar, ie 1 or 0. */char lmseq( LMseq * id ){  char seq, tmp;    seq = id->state0 & 1;  tmp = id->state1 & 1;  id->state0 >>= 1;  if ( tmp ) id->state0 |= 0x80000000;  id->state1 >>= 1;  if ( seq ) {    id->state0 ^= id->mask0;    id->state1 ^= id->mask1;  }  return seq;}

⌨️ 快捷键说明

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