后期更新:matlab中产生m序列最简单的方法是调用idinput()函数,关于idinput()的具体用法可以在matlab中查看说明,这里举两个简单的例子:

src = idinput(8191,'RBS')'; % 产生随机的二进制数据 1 -1
m = idinput(8191,'PRBS')';  % 产生长度为8192的m序列

m序列的基本生成原理这里就不做介绍了,今天闲着没事时候就行统计一下m序列中00和11的个数,结果有点失望,竟然是完全相等的(手动再最前面或者最后面补了一个0),并且00和11的个数是m序列长度的1/4(微小浮动)。我尝试了将m序列循环移位再统计,结果还是只有这两组值!!!下面是我通过本原多项式产生所有n=9和n=10的m序列并统计00和11个数的代码。其中 primpoly(9,'all')  这个函数可以获得所有n=9的m序列的本原多项式。

产生m序列的函数,输入参数为:m序列的本原多项式的系数矩阵

function[mseq]=m_sequence(fbconnection)
%     primpoly(9,'all')n=length(fbconnection);N=2^n-1; newregister = zeros(1, n);mseq = zeros(1, N);register=[zeros(1,n-1) 1];  % 移位寄存器的初始状态mseq(1)=register(n);        % m序列的第一个输出码元for i=2:N      newregister(1)=mod(sum(fbconnection.*register),2);     for j=2:n          newregister(j)=register(j-1);     end    register=newregister;     mseq(i)=register(n); end
end

下面这代码是我统计m中00和11个数的代码

clear all;syms D;
%     primpoly(9,'all')
if 0poly_str = [D^9+D^4+1, D^9+D^4+D^3+D^1+1, D^9+D^5+1, D^9+D^5+D^3+D^2+1, D^9+D^5+D^4+D^1+1, D^9+D^6+D^4+D^3+1, D^9+D^6+D^4+D^3+D^2+D^1+1, ...D^9+D^6+D^5+D^3+1, D^9+D^6+D^5+D^3+D^2+D^1+1, D^9+D^6+D^5+D^4+D^2+D^1+1, D^9+D^6+D^5+D^4+D^3+D^2+1, D^9+D^7+D^2+D^1+1,D^9+D^7+D^4+ ...D^2+1, D^9+D^7+D^5+D^1+1, D^9+D^7+D^5+D^2+1, D^9+D^7+D^5+D^3+D^2+D^1+1, D^9+D^7+D^5+D^4+D^2+D^1+1, D^9+D^7+D^5+D^4+D^3+D^2+1, D^9+ ...+D^7+D^6+D^3+D^2+D^1+1, D^9+D^7+D^6+D^4+1, D^9+D^7+D^6+D^4+D^3+D^1+1, D^9+D^7+D^6+D^5+D^4+D^2+1, D^9+D^7+D^6+D^5+D^4+D^3+1, D^9+D^8+ ...+D^4+D^1+1, D^9+D^8+D^4+D^2+1, D^9+D^8+D^4+D^3+D^2+D^1+1, D^9+D^8+D^5+D^1+1, D^9+D^8+D^5+D^4+1, D^9+D^8+D^5+D^4+D^3+D^1+1, D^9+D^8+ ...D^6+D^3+D^2+D^1+1, D^9+D^8+D^6+D^4+D^3+D^1+1, D^9+D^8+D^6+D^5+1, D^9+D^8+D^6+D^5+D^3+D^1+1, D^9+D^8+D^6+D^5+D^3+D^2+1 ,D^9+D^8+D^6+ ...D^5+D^4+D^1+1, D^9+D^8+D^6+D^5+D^4+D^3+D^2+D^1+1, D^9+D^8+D^7+D^2+1, D^9+D^8+D^7+D^3+D^2+D^1+1, D^9+D^8+D^7+D^5+D^4+D^2+1, D^9+D^8+ ...D^7+D^5+D^4+D^3+1, D^9+D^8+D^7+D^6+D^2+D^1+1, D^9+D^8+D^7+D^6+D^3+D^1+1, D^9+D^8+D^7+D^6+D^3+D^2+1, D^9+D^8+D^7+D^6+D^4+D^2+1, D^9+ ...D^8+D^7+D^6+D^4+D^3+1, D^9+D^8+D^7+D^6+D^5+D^1+1, D^9+D^8+D^7+D^6+D^5+D^3+1, D^9+D^8+D^7+D^6+D^5+D^4+D^3+D^1+1];
elsepoly_str = [D^10+D^3+1, D^10+D^4+D^3+D^1+1, D^10+D^5+D^2+D^1+1, D^10+D^5+D^3+D^2+1, D^10+D^6+D^5+D^2+1, D^10+D^6+D^5+D^3+D^2+D^1+1, ...D^10+D^7+1, D^10+D^7+D^3+D^1+1, D^10+D^7+D^6+D^2+1, D^10+D^7+D^6+D^4+D^2+D^1+1, D^10+D^7+D^6+D^5+D^2+D^1+1, D^10+D^7+D^6+D^5+D^4+D^1+...1, D^10+D^7+D^6+D^5+D^4+D^3+D^2+D^1+1, D^10+D^8+D^3+D^2+1, D^10+D^8+D^4+D^3+1, D^10+D^8+D^5+D^1+1, D^10+D^8+D^5+D^4+1, D^10+D^8+D^5+...D^4+D^3+D^2+1, D^10+D^8+D^6+D^1+1, D^10+D^8+D^6+D^4+D^2+D^1+1, D^10+D^8+D^6+D^5+D^3+D^1+1, D^10+D^8+D^7+D^2+1, D^10+D^8+D^7+D^3+D^2+...D^1+1, D^10+D^8+D^7+D^4+D^2+D^1+1, D^10+D^8+D^7+D^5+1, D^10+D^8+D^7+D^6+D^2+D^1+1, D^10+D^8+D^7+D^6+D^5+D^2+1, D^10+D^8+D^7+D^6+D^5+...D^4+D^2+D^1+1, D^10+D^8+D^7+D^6+D^5+D^4+D^3+D^1+1, D^10+D^9+D^4+D^1+1, D^10+D^9+D^4+D^2+1, D^10+D^9+D^5+D^2+1, D^10+D^9+D^5+D^4+D^2+...D^1+1, D^10+D^9+D^6+D^1+1, D^10+D^9+D^6+D^3+D^2+D^1+1, D^10+D^9+D^6+D^4+D^3+D^1+1, D^10+D^9+D^6+D^5+D^4+D^3+1, D^10+D^9+D^6+D^5+D^4+...D^3+D^2+D^1+1, D^10+D^9+D^7+D^3+1, D^10+D^9+D^7+D^5+D^4+D^2+1, D^10+D^9+D^7+D^6+1, D^10+D^9+D^7+D^6+D^4+D^1+1, D^10+D^9+D^7+D^6+D^4+...D^3+D^2+D^1+1, D^10+D^9+D^7+D^6+D^5+D^4+D^3+D^2+1, D^10+D^9+D^8+D^4+D^2+D^1+1, D^10+D^9+D^8+D^4+D^3+D^2+1, D^10+D^9+D^8+D^5+1, D^10+...D^9+D^8+D^5+D^4+D^3+1, D^10+D^9+D^8+D^6+D^2+D^1+1, D^10+D^9+D^8+D^6+D^3+D^2+1, D^10+D^9+D^8+D^6+D^4+D^2+1, D^10+D^9+D^8+D^6+D^4+D^3+...1, D^10+D^9+D^8+D^6+D^5+D^1+1, D^10+D^9+D^8+D^6+D^5+D^4+D^3+D^2+1, D^10+D^9+D^8+D^7+D^3+D^2+1, D^10+D^9+D^8+D^7+D^4+D^1+1, D^10+D^9+...D^8+D^7+D^5+D^4+1, D^10+D^9+D^8+D^7+D^6+D^4+D^3+D^1+1, D^10+D^9+D^8+D^7+D^6+D^5+D^4+D^1+1, D^10+D^9+D^8+D^7+D^6+D^5+D^4+D^3+1];
endm00 = zeros(2, length(poly_str));
m11 = zeros(2, length(poly_str));fd = fopen('m_Seq_Cnt.txt','a+');  % 保存数据结果到文本文件
for i = 1 : 1 : length(poly_str)tmp = fliplr(sym2poly(poly_str(i)));s   = tmp(2 : length(tmp));m_seq_tmp = m_sequence(s);m_seq1 = [0 m_seq_tmp];m00_cnt = 0;m11_cnt = 0;t1 = m_seq1(1 : 2 : length(m_seq1));t2 = m_seq1(2 : 2 : length(m_seq1));for k = 1 : 1 : length(t1)tmp = t1(k) + t2(k);if(tmp == 0)m00_cnt = m00_cnt + 1;elseif(tmp == 2)m11_cnt = m11_cnt + 1;endendm00(1, i) = m00_cnt;m11(1, i) = m11_cnt;   fprintf(fd, '前置: 00 -> %d       11 -> %d            ', m00_cnt, m11_cnt);m00_cnt = 0;m11_cnt = 0;m_seq2 = [m_seq_tmp 0];t1 = m_seq2(1 : 2 : length(m_seq2));t2 = m_seq2(2 : 2 : length(m_seq2));for k = 1 : 1 : length(t1)tmp = t1(k) + t2(k);if(tmp == 0)m00_cnt = m00_cnt + 1;elseif(tmp == 2)m11_cnt = m11_cnt + 1;endendm00(2, i) = m00_cnt;m11(2, i) = m11_cnt;fprintf(fd, '后置: 00 -> %d       11 -> %d \n', m00_cnt, m11_cnt);
endfclose(fd);

后来也统计了一下01和10的个数,这组的变化较大,总体浮动大概是00和11的两倍左右。

matlab生成m序列的函数(本原多项式产生所有m序列)相关推荐

  1. MATLAB生成脉冲序列:pulstran 函数使用简记:

    MATLAB生成脉冲序列:pulstran 函数使用简记: pulstran函数用来生成脉冲序列,其主要调用语法如下: 1.pulstran(t,d,'func',p1,p2,···):生成一个基于连 ...

  2. python序列操作函数有哪些_Python笔记--序列操作函数

    1All(): 判断给出的可迭代参数iterable中所有元素是否均为true,是则返回true,否则返回false.注:除了0,空,False外都算作true.空元组,空列表返回true. 语法:a ...

  3. MATLAB生成excel表格

    MATLAB生成excel表格 核心函数 实例 常规 特殊 其他 by HPC_ZY 核心函数 xlswrite(filename, data); 其中,data可以是二维数组(mat)或二维元胞(c ...

  4. Python----关键字in , 计算序列的函数

    关键字 in 和 not in (not) in : 检查某元素是否 (不)是 序列成员 是:返回True 否:返回False 元素 in 序列 元素 not in 序列 序列 有关函数 方法 功能 ...

  5. matlab生成m序列的方法

    引言 m序列属于伪随机序列的一种.在通信领域应用较为广泛.由于其具有很好的伪噪声特性,因此在保密通信中,可以将其应用在高可靠性的保密通道中.另外,雷达领域也有广泛应用,伪随机相位编码脉冲/连续波雷达中 ...

  6. matlab伪随机码,Matlab生成M序列的伪随机码

    图3.5 线性反馈移位寄存器 MATLAB生成M序列伪随机码函数如下: % 在MATLAB命令窗口输入以下: % fbconnection=[0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 ...

  7. matlab生成均匀部分散点图,应用halton序列生成均匀散点图

    前言 一门课的作业要用RBF-DQ方法计算流场.简单来讲就是要在无网格的条件下用高精度格式实现流场的仿真计算.生成散点图时,用蒙特卡洛的方法得到的散点图分布不是很均匀,于是想到一种叫做halton的序 ...

  8. 基于MATLAB的m序列产生函数及其调用方法

    m序列的定义### m序列是由n级线性移位寄存器产生的周期为 P=2n−1 P=2^n-1的码序列,是最长线性移位寄存器序列的简称. 关于m序列的基本生成原理网上介绍很多了,其主要步骤就是寄存器的移位 ...

  9. 关于matlab生成M序列的代码

    #关于matlab生成M序列的代码 参考了相关书籍和网上matlab生产m序列的代码,我发现和书上的定义有些不一样(系统辨识原理及其运用-李彦俊)于是我就自己学了一个m文件来供大家参考.使用起来简单方 ...

最新文章

  1. Delphi 7 在程序中直接执行SQL脚本文件
  2. c语言计算器实现简单的四则运算.(加,减,乘,除)实验报告,C语言数据结构“简单计算器。”1、简单计算器。请按照四则运算加、减、乘、除、幂(^)和括号的优先关系和惯例,编写计算器程...
  3. 如何在Python中附加文件?
  4. 关于bat的变量赋值和解析机制
  5. r指引到文件夹_R语言中进行文件夹及文件夹内文件操作范例
  6. python函数加括号于不加括号的区别
  7. 浅谈JavaScript 面向对象编程[转]
  8. plsql查询中补入空行--做报表分页挺有用
  9. python 梯度下降_Python解释的闭合形式和梯度下降回归
  10. 【开源项目】向Nginx-RTMP服务器推流
  11. 飞鸽传书有关举证不够严谨
  12. java 逆矩阵,java – 如何创建逆变换矩阵
  13. RADIO控件变量添加
  14. kubernetes挂载存储
  15. NUMA与英特尔下一代Xeon处理器学习心得(10)
  16. 扎克伯格再售9500万美元股票 向裸捐目标迈近一步
  17. yacc语法学习-part1
  18. 操作 神通数据库_神通数据库OGDCProvider使用手册.PDF
  19. 深度linux 无线网卡,在Deepin Linux系统无线网卡、蓝牙模块驱动安装和出现问题的解决...
  20. 生成pdf设置中文字体出错 \simsun.ttc' with 'Identity-H' is not recognized或者type of font{0} is not recognized

热门文章

  1. “遇冷”的电影节背后:“元宇宙”能为其成功“续热”吗?
  2. 基于COMSOL的固体力学或压力声学模块仿真声子晶体
  3. esp8266 arduino 驱动MG996R大功率舵机
  4. 利用二叉树设计同学录管理系统
  5. 十进制数转化为任意进制数n,采用变量N、数组A[]进行存储两种算法实例
  6. Intellij IDEA简介
  7. Intellij IDEA Ultimate下载安装
  8. 实验八、ADC0809模数转换器的使用
  9. 小学六年级走进计算机ppt,小学信息技术《走进计算机》PPT课件.ppt
  10. 致远互联2021年中报:扎根协同的广阔天地,撸起袖子加油干