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

📄 sequence_shixian.cpp

📁 这个是一个跳频通信的仿真程序
💻 CPP
字号:
//**************m序列生成跳频序列的实现文件****************
#include"sequence.h"                    
//using namespace std;

//*************类的构造函数********************************
sequence::sequence()
{    
	 n=6;
     m=3;
	 ndata=new int [n];
	 mdata=new int [m];
}
//*********************************************************


//************类的析构函数*********************************
sequence::~sequence()
{  
   delete ndata;
   delete mdata;
}
//*********************************************************

//形成txt文件,并将以后的结果放在里面。
ofstream ofile("tiaopintongxin.txt",ios::app);

//****移位和用户寄存器初始化输入函数***********************
void sequence::input()
{   
	cout<<"输入0或1型数据给数组ndata,即初始化移位寄存器并且不能全部置0 !"<<endl;
    for(int i=0;i<n;i++)
	{
		cin>>ndata[i];
	}
    
	cout<<"输入0或1型数据给数组mdata!即初始化用户选择寄存器"<<endl;
	for(i=0;i<m;i++)
	{
		cin>>mdata[i];
	}
}
//**********************************************************

//*****移位和用户寄存器初始化后数据显示函数*****************
void sequence::output()
{   
	cout<<"输出数组ndata!即初始化移位寄存器的值如下:"<<endl;
    ofile<<"输出数组ndata!即初始化移位寄存器的值如下:"<<endl;
    for(int i=0;i<n;i++) 
	{  
		cout<<setw(4)<<ndata[i];
	    ofile<<setw(4)<<ndata[i];
    }
	
	cout<<endl;
	ofile<<endl;

    cout<<"输出数组mdata!即初始化用户选择寄存器的值如下:"<<endl;
	ofile<<"输出数组mdata!即初始化用户选择寄存器的值如下:"<<endl;
	for(i=0;i<m;i++)
	{  
		cout<<setw(4)<<mdata[i];
	    ofile<<setw(4)<<mdata[i];
	}
	cout<<endl;
	ofile<<endl;
}
//*********************************************************

//*********m序列生成跳频序列的运算函数*********************
void sequence::yunsuan()
{   
	int a[8][63]={0};
    
//*****以下是生成跳频序列程序****************************** 
   for(int i=0;i<8;i++)
	{    
	    for(int j=0;j<63;j++)
		{     
			for(int k=0,l=0;k<3;k++,l=l+2)  
			{
				a[i][j]=a[i][j]+pow(2,k)*((mdata[k]+ndata[l])%2);
			}
            int sum;
			sum=ndata[0]+ndata[n-1];
			
			for(k=n-2;k>=0;k--)
			{
				ndata[k+1]=ndata[k];
			}
			ndata[0]=sum%2;
		}
        
		for(int k=0;k<m;k++)
		{   
			mdata[k]=mdata[k]+1;
			if(mdata[k]%2==0)continue;
		    else break;                       
		}
	}
  //*******************************************************

  //*******以下是输出跳频序列程序**************************
	cout<<"输出跳频序列如下:"<<endl;
	ofile<<"输出跳频序列如下:"<<endl;
      for(i=0;i<8;i++)
	  {   
		  cout<<"第"<<i+1<<"条序列如下:"<<endl;
	      ofile<<"第"<<i+1<<"条序列如下:"<<endl;
		  
		  for(int j=0,g=1;j<63;j++,g++)
		  {  
		      cout<<setw(2)<<a[i][j];
	          ofile<<setw(2)<<a[i][j];   
		  }
	      cout<<endl;
		  ofile<<endl;                                           
	  }
  //*******************************************************
   
  //***以下是求汉明自相关值程序****************************	  
	cout<<endl<<"输出每条序列的汉明自相关值如下:"<<endl;
	ofile<<endl<<"输出每条序列的汉明自相关值如下:"<<endl;
	  int h[8];
	  for(i=0;i<8;i++)
	  {   
	      int zixiangguanzhi=0;
		  for(int r=1;r<63;r++)
		  {   
			  int k=0; 
			  for(int j=0;j<63;j++)
			  { 
				  if(a[i][j]==a[i][(j+r)%63])k++;
		          else continue;    
			  }
			  if(k>zixiangguanzhi)zixiangguanzhi=k;
		  }
          h[i]=zixiangguanzhi;
		  
		  cout<<setw(4)<<h[i];
		  ofile<<setw(4)<<h[i];
	  }
	//*****************************************************

	//***以下是求序列游程程序******************************
	  cout<<endl<<"输出每条序列的游程如下:"<<endl;
	  ofile<<endl<<"输出每条序列的游程如下:"<<endl;
      
	  cout<<endl;
	  ofile<<endl;
	  for(i=0;i<8;i++)
	  {   
		  int youcheng=1;
	      int k=1;
	      for(int j=0;j<62;j++)
		  {   
			  if(a[i][j]==a[i][j+1])k++;
		      else 
			  {   
				  if(k>youcheng)youcheng=k;
			      k=1; 
			  }
		  }
		  h[i]=youcheng;
		  cout<<setw(4)<<h[i];
		  ofile<<setw(4)<<h[i];
	  }
//*******************************************************

//*******以下是求汉明互相关值程序************************
      cout<<endl<<"输出任何两条序列的汉明互相关值如下:"<<endl;
      ofile<<endl<<"输出任何两条序列的汉明互相关值如下:"<<endl;
	  for(i=0;i<8;i++)
	  {   
	       for(int j=i+1;j<8;j++)
		   {   
			   int HMHXGZ=0;
               
			   for(int r=0;r<63;r++)
			   {   
				   int t=0;  
				    
			        for(int k=0;k<63;k++)
					{
						if(a[i][k]==a[j][(k+r)%63]) t++; 
					}
					if(t>HMHXGZ) HMHXGZ=t;
			   }
			   cout<<setw(4)<<HMHXGZ;
			   ofile<<setw(4)<<HMHXGZ;
		   }
		   cout<<endl;
		   ofile<<endl;
	  }

}
//*******************************************************   
    

⌨️ 快捷键说明

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