一、怎么构建m序列

    m序列是一种基本的伪随机序列,有优良的自相关函数,易于产生和复制,在扩频技术中得到了广泛的应用。长度为 位的m序列可以用n级线性移位寄存器来产生。如下图所示:

将发生器写成如下方程:f(x)=C0+C1x+C2x2+...+Cnxn=∑i=0nCixif(x)=C_0+C_1x+C_2x^2+...+C_nx^n=\sum_{i=0}^nC_ix^if(x)=C0​+C1​x+C2​x2+...+Cn​xn=i=0∑n​Ci​xi
    这方程成为特征多项式。式中xix^ixi仅指明其系数CiC_iCi​的值(1或0),x本身的取值并无实际意义,也不需要去计算x的值。例如,若特征方程为f(x)=x4+x+1f(x)=x^4+x+1f(x)=x4+x+1则它仅表示 ,x4,x1和x0x^4,x^1和x^0x4,x1和x0的系数C4=C1=C0=1C_4=C_1=C_0=1C4​=C1​=C0​=1,其余为0。经严格证明:若反馈位移寄存器的特征多项式为本原多项式,则位移寄出器能产生m序列。只要找到本原多项式,就可构成m序列发生器。

二、C语言编程实现“六阶位移寄存器”m序列(即n=6)

1. 六阶m序列分析
  • 六阶m序列的周期:p=26−1=63p=2^6-1=63p=26−1=63
  • 六阶m序列的本原多项式:f(x)=x6+x+1f(x)=x^6+x+1f(x)=x6+x+1
    C6=C1=C0=1C_6=C_1=C_0=1C6​=C1​=C0​=1
  • 六阶m序列的序列发生器结构图:

    观察上图可知反馈量为:a5⊕a0a_5\oplus a_0a5​⊕a0​
2. 六阶m序列源程序
【6msquence.c】
#include<stdio.h>main()
{    int a[6] = {0,0,0,0,0,1};  //六级寄存器初始化[0 0 0 0 0 1]int m[63];int temp;          //temp用于存放反馈量 float period = 0.0;  //时间间隔for(int i=0;i<63;i++) {m[i] = a[0];temp = a[5]^a[0];a[0] = a[1];            a[1] = a[2];a[2] = a[3];a[3] = a[4];a[4] = a[5];a[5] = temp;} for(int j=0;j<63;j++){for(int k=0;k<101;k++){period += 0.01; printf("%f\t%d\n",period,m[j]);}}
}

三、gnuplot绘制图像

关于gnuplot的详细教程请点击→\rightarrow→Java计算出三角函数的数据并通过gnuplot作出波形图

1. 编译C程序

    博主使用TCC编译器将.c文件编译为.exe文件。

2. 运行程序

    运行.exe文件,观察输出结果,第一列为时间,第二列为m序列数据。

3. 绘制序列图
  • 绘图指令:
gnuplot>plot [0:80] [-1.5:1.5] "<6msquence.exe" u 1:2 w l title "6msquence"
  • 绘图演示:

四、验证m序列

1. m序列特性验证

    改变源程序【6msquence.c】第22行至第28行的内容:

for(int j=0;j<63;j++)
{printf("%d",m[j]);
}

运行后可以观察到“1”和“0”的数量,运行结果如下图:

程序计算结果符合m序列的特点:在一个周期63(p=26−1p=2^6-1p=26−1)内“1”为32(2n−12^{n-1}2n−1)个,“0”为31(2n−1−12^{n-1}-12n−1−1)个,“1”比“0”多一个。

2. 序列图验证

    为了验证C语言编程实现的m序列是否正确,博主使用matlab构建了一个六阶m序列发生器,生成的m序列图如下:

C语言编程实现的m序列图如下:

对比两张图我们发现图形一模一样。

《C》C语言编程实现指定阶“m序列”并通过gnuplot绘图相关推荐

  1. 《C》C语言编程实现任意阶数的“m序列”并通过gnuplot绘图——在知道本原多项式的前提下

    关于m序列的构建方法 在我之前的博客中已详细介绍,请点击→\rightarrow→C语言编程实现指定阶"m序列"并通过gnuplot绘图 一.C语言编程实现任意阶m序列 1. 任意 ...

  2. 《C》C语言编程实现任意阶数的“Gold序列”并通过gnuplot绘图——在知道本原多项式的前提下

    关于Gold序列的构建方法 在我之前的博客中已详细介绍,请点击→\rightarrow→C语言编程实现指定阶"Gold序列"并通过gnuplot绘图 一.C语言编程实现任意阶Gol ...

  3. c语言编程输出指定范围的素数,C语言输出范围内所有素数

    用C语言输出100之间的所有质数 用C语言输出100之间的所有质数. 各位. 首先新建一个空白的c语言文件,引入头文件,头文件中包括math库,稍后会用到,建立主函数: 主函数上面新建一个判断素数的函 ...

  4. c语言离散卷积编程,实验一 离散卷积的C语言编程.ppt

    实验一 离散卷积的C语言编程.ppt 实验一 离散卷积的C语言编程实验 DSP实验室 实验性质 综合设计性实验 实验目的 1 了解和认识常用的各种信号: 2 掌握卷积的定义和计算方法: 3 掌握在计算 ...

  5. 离散卷积的c语言编程实验,数字信号处理实验一离散卷积c语言编程.ppt

    数字信号处理实验一离散卷积c语言编程 实验一 离散卷积的C语言编程实验 DSP实验室 2005 实验性质 综合设计性实验 实验目的 1 了解和认识常用的各种信号: 2 掌握卷积的定义和计算方法: 3 ...

  6. c语言离散卷积编程,数电实验一 离散卷积的C语言编程.ppt

    数电实验一 离散卷积的C语言编程.ppt 实验一 离散卷积的C语言编程实验,DSP实验室,实验性质,综合设计性实验,实验目的,1 了解和认识常用的各种信号: 2 掌握卷积的定义和计算方法: 3 掌握在 ...

  7. c语言编程四门成绩,C语言编程题与答案

    <C语言编程题与答案>由会员分享,可在线阅读,更多相关<C语言编程题与答案(25页珍藏版)>请在人人文库网上搜索. 1.WORD格式-可编辑-C语言编程题1. (*)求分数序列 ...

  8. 分数序数之和c语言,用c语言求解:有一分数序列2/1,3/2,5/3,8/5,13/8,21/13,…求这个数列的前20项之和....

    用c语言求解:有一分数序列2/1,3/2,5/3,8/5,13/8,21/13,-求这个数列的... 3个答案  提问时间: 2010-12-22  2个赞 回答:1.首先弄清楚这组分数序列的规律:从 ...

  9. 有一分数序列求前20项和答案c语言,用c语言求解:有一分数序列2/1,3/2,5/3,8/5,13/8,21/13,…求这个数列的前20项之和....

    用c语言求解:有一分数序列2/1,3/2,5/3,8/5,13/8,21/13,-求这个数列的... 3个答案  提问时间: 2010-12-22  2个赞 回答:1.首先弄清楚这组分数序列的规律:从 ...

  10. C语言编程>第二十一周 ⑥ 请补充main函数,该函数的功能是:从键盘输入一个字符串,即一个指定,然后把这个字符及其后面的所有字符全部删除,结果仍然保存在原串中。

    例题:请补充main函数,该函数的功能是:从键盘输入一个字符串,即一个指定,然后把这个字符及其后面的所有字符全部删除,结果仍然保存在原串中. 例如:输入"1234567",指定字符 ...

最新文章

  1. [Spring 深度解析]第2章 Spring基础
  2. 郑州升达学院计算机考试,第35次全国计算机等级考试报名工作通知
  3. List集合2-LinkedList
  4. dotnet获取PDF文件的页数
  5. 2020年云计算的十大新兴趋
  6. PHP提高性能的几个Tips
  7. php函数fiter,PHP filter_var() 函数和 Filter 函数使用说明
  8. TensorFlow错误ValueError: No gradients provided for any variable
  9. 如何使用IBM SPSS Statistics进行描述性分析
  10. 安卓开发示例代码总结(持续更新中...)
  11. java hibernate 包_hibernatejar包官方下载-Hibernate.jar包下载 --pc6下载站
  12. 东方博宜 #1008字符图形9-数字正三角
  13. Java实现随机生成车牌号
  14. 百度智能云 x 华栖云 | 媒体智能化探路者
  15. 如何区分集线器、交换机、路由器呢
  16. python中怎么编写程序_python写完程序怎么运行
  17. BootStrap---day02、03微金所项目
  18. 求职路艰辛,深圳天瑞地安助力求职人对工作感到无忧
  19. 轻听-最好的解压助眠医疗轻音乐集
  20. rhel配置磁盘分区_linux系统安装细节及磁盘分区划分

热门文章

  1. 个性化域名邮箱的配置云阿里云域名解析详细教程
  2. c++删除字符串特殊符号
  3. ImageJ的自动二值算法C++实现
  4. 高频小信号谐振放大器设计-课程设计Multisim仿真
  5. 时域、频域、傅里叶变换
  6. abaqus实例手册_ABAQUS例子问题手册目录.pdf
  7. 高一计算机算法教案,高中信息技术 算法及其实现 教案
  8. 定时清理文件夹bat程序
  9. CG佬的20年:行走于行业的过去与未来
  10. 2010年06期《程序员》配套源码及相关链接