基于MATLAB的m序列产生函数及其调用方法
来源:互联网 发布:鲜活的数据 编辑:程序博客网 时间:2024/05/22 06:17
m序列的定义###
m序列是由n级线性移位寄存器产生的周期为
关于m序列的基本生成原理网上介绍很多了,其主要步骤就是寄存器的移位和异或运算。即:特定位置寄存器(由反馈系数决定)的值取出来进行异或运算(也就是或者全部相加后模2的运算),寄存器中的值往输出端移位,最后一位输出,第一个寄存器放刚才异或运算中得到的值。
m序列生成函数的MATLAB代码
function [seq]=mseq(coef)%***************************************************% 此函数用来生成m序列% coef为反馈系数向量% Author: FastestSnail% Date: 2017-10-03%***************************************************m=length(coef);len=2^m-1; % 得到最终生成的m序列的长度 backQ=0; % 对应寄存器运算后的值,放在第一个寄存器seq=zeros(1,len); % 给生成的m序列预分配registers = [1 zeros(1, m-2) 1]; % 给寄存器分配初始结果for i=1:len seq(i)=registers(m); backQ = mod(sum(coef.*registers) , 2); %特定寄存器的值进行异或运算,即相加后模2 registers(2:length(registers)) = registers(1:length(registers)-1); % 移位 registers(1)=backQ; % 把异或的值放在第一个寄存器的位置endend
该函数的调用方法
很多人得到函数不知道如何调用。
首先需要得到一个不同位数m序列的反馈系数表。(网上有很多,我这里也是在网上截的图,感谢原作者。)
然后在表上查到你要生成的m序列的长度,比如说15,即周期P为15。从表上能看出,需要的寄存器级数为4,即有4个寄存器。然后反馈系数
综上:调用方式是,首先把函数放在当前工作空间,然后输入
mseq([0 0 1 1])
返回的结果就是15位的m序列,如下:
最后再补充几点:
第一,关于寄存器的形状还有系数,我截了个图,(从百度文库上找的,感谢原作者,m序列原理)大家参考。
第二,八进制变二进制,可以打开windows下面的计算器,然后选择 查看->程序员,即可看到二进制,八进制,十进制和十六进制的转换。但是一般来说熟练了,十六进制与二进制、八进制与二进制的转换直接就能看出来。
第三,由于寄存器初始的值设置的不同(程序中默认为[1 0 0 …… 0 1],千万不能全部为0,一般来说有两个1就没问题),生成的m序列看似不一样,其实是一样的。只要通过循环移位,能够变成一样,就是正确的m序列。
- 基于MATLAB的m序列产生函数及其调用方法
- Python 调用Matlab的函数或者调用M文件方法
- matlab产生m序列代码
- m序列的产生原理与matlab代码
- python调用matlab的m自定义函数
- python调用matlab的m自定义函数
- MATLAB的M文件调用另一个M文件的函数
- VC与Matlab混合编程——基于编译m函数为DLL的方法
- VC与Matlab混合编程——基于编译m函数为DLL的方法
- VC调用matlab中定义的.m文件中的函数的方法
- 完整的m序列序列生成函数和调用
- 基于MATLAB的简单函数调用
- Matlab编程与数据类型 -- 函数M文件的调用
- C程序调用matlab中M文件的方法
- verilog 产生m序列
- matlab中调用函数的另一种方法 @
- MATLAB调用C/C++函数的方法
- MATLAB调用C/C++函数的方法
- webpack超详细配置, 使用教程(图文)
- 神经网络训练细节(二)
- 程序调试的总结
- 主机安装全命令
- Leetcode-686. Repeated String Match(string)
- 基于MATLAB的m序列产生函数及其调用方法
- redis学习笔记
- CF Unbearable Controversy of Being 489D 暴力
- gradle之ssh插件
- 文章标题
- kali 基本命令语言
- 第二讲,计算机网络概述(下)
- Linux中makefile过程(尚未学完)
- React Native项目结构