4级M序列及其逆M序列生成C语言模拟

/******************************************************************************
* 文件名: 4orderMSequence.c 
* 功能:用于产生4级M序列以及逆M序列 
* 说明:4级M序列以15位为一个周期,逆M序列以30位为一个周期 
* 编者:Louis Zhang 
* 日期:2018-4-17 
******************************************************************************/
#include <stdio.h>

//4级M序列生产函数 
void M4(int *m, int *InverM)
{
	int x[4] = {1,1,1,0};  //四级寄存器初始化 
	int temp,s=0;          //temp,用于存放中间量,s模拟时钟方波信号值,0,1表示 
		
	for(int i=0;i<15;i++) 
	{
		m[i] = x[0];
		temp = x[2]^x[3];
		x[3] = x[2];
		x[2] = x[1];
		x[1] = x[0];
		x[0] = temp;
		
		//产生逆M序列前14位 
		if(i!=0)  //逆M序列从M序列的第2个元素开始生成 
		{
			s ^= 1;
			InverM[i-1] = m[i]^s;
		}
	}
	s ^= 1;
	InverM[14] = m[0]^s;  //逆M序列第15位 
	
	//产生逆M序列后15位 
	for(int i=0;i<14;i++)
	{
		s ^= 1;
		InverM[i+15] = m[i+1]^s; 
	}
	s ^= 1;
	InverM[29] = m[0]^s;		
}
int main()
{	 
	int MSeq[15];
	int InverMSeq[30];
	int msec=0;
	 
	M4(MSeq, InverMSeq);
	
	printf("The M Sqeuence is:");
	for(int i=0;i<15;i++)
		printf("%d ",MSeq[i]);
	printf("\n");
	
	printf("The Inversion M Sequence is:");
	for(int i=0;i<30;i++)
		printf("%d ",InverMSeq[i]);
	printf("\n");	
} 

可用于模型辨识、通信、加密等学习中的M序列的学习。

转载请标明出处!

相互学习,共同进步!

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页