?? 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 + -