关于Gold序列的构建方法
在我之前的博客中已详细介绍,请点击 C语言编程实现指定阶“Gold序列”并通过gnuplot绘图
一、C语言编程实现任意阶Gold序列
1. 任意阶Gold序列的程序设计流程图:
2. 任意阶Gold序列源程序
【Gsquence.c】
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
int main(int argc, char *argv[]) //命令行参数
{
if(argc<2) //输出提示信息,提示如何使用
{
printf("\nProduce data of Gsquence 2018 ygaairspace Copyright(C)");
printf("\n\nUsage: Gsquence index11 index12 and index21 index22...\n('index11' is index of primitive polynomial(1)\n('index21' is index of primitive polynomial(2)");
printf("\n\nExample: Gsquence 6 1 0 and 6 5 2 1 0\n");
return 0;
}
int temp1,temp2;
int mark;
int count_c1,count_c2;
int p; //定于p为周期变量
int max = atoi(argv[1]); //将字符型的“最大指数”转化为整型数
//定义初始化数组a1,a2
//定义反馈选择接入数组c1,c2
int a1[100] = {0};
int c1[101] = {0};
int a2[100] = {0};
int c2[100] = {0};
for(int i=1;i<argc;i++) //根据指数的数值将对应c[i]置1
{
if(strcmp(argv[i],"and")==0) //检测到"and"时将此时的i付给mark,并跳出循环,不再接收"and"后的数值
{
mark = i+1;
break;
}
count_c1 = atoi(argv[i]); //将字符型的“指数”转化为整型数
c1[count_c1] = 1;
}
a1[max-1] = 1;
a2[max-1] = 1;
p = pow(2,max)-1; //计算周期
int m1[p];
int m2[p];
/*******************产生第一个m序列******************/
for(int j1=0;j1<p;j1++)
{
m1[j1] = a1[0];
int count_a1 = max-1;
temp1 = a1[0];
for(int k1=1;k1<max;k1++) //异或反馈量
{
if(c1[k1] == 1)
{
temp1 = temp1^a1[count_a1];
count_a1--;
}
else
{
count_a1--;
}
}
for(int l1=0;l1<(max-1);l1++) //初始值a[]位移
{
a1[l1] = a1[l1+1];
}
a1[max-1] = temp1;
}
/*******************产生第二个m序列******************/
for(mark;mark<argc;mark++) //接收"and"后的数值
{
count_c2 = atoi(argv[mark]);
c2[count_c2] = 1;
}
for(int j2=0;j2<p;j2++)
{
m2[j2] = a2[0];
int count_a2 = max-1;
temp2 = a2[0];
for(int k2=1;k2<max;k2++)
{
if(c2[k2] == 1)
{
temp2 = temp2^a2[count_a2];
count_a2--;
}
else
{
count_a2--;
}
}
for(int l2=0;l2<(max-1);l2++)
{
a2[l2] = a2[l2+1];
}
a2[max-1] = temp2;
}
float period = 0.0; //时间间隔
for(int n=0;n<p;n++)
{
for(int q=0;q<101;q++)
{
period += 0.01;
printf("%f\t%d\n",period,m1[n]^m2[n]); //异或两个m序列的数据就得到Gold序列的数据
}
}
}
三、gnuplot绘制图像、验证结果
1. 6阶Gold序列
选择 与 构成优选对。
- 绘制序列图:
- 验证序列图:
matlab生成的6阶Gold序列图:
此程序生成的6阶Gold序列图:
对比两图,图形一致。
2. 7阶Gold序列
选择 与 构成优选对。
- 绘制序列图:
- 验证序列图:
matlab生成的7阶Gold序列图:
此程序生成的6阶Gold序列图:
对比两图,图形一致。