📄 sequence_shixian.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 + -