必威体育Betway必威体育官网
当前位置:首页 > IT技术

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

时间:2019-08-19 11:40:00来源:IT技术作者:seo实验室小编阅读:59次「手机版」
 

m序列

m序列的定义###

m序列是由n级线性移位寄存器产生的周期为P=2n−1的码序列,是最长线性移位寄存器序列的简称。

关于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; % 把异或的值放在第一个寄存器的位置
end
end

该函数的调用方法

很多人得到函数不知道如何调用。

首先需要得到一个不同位数m序列的反馈系数表。(网上有很多,我这里也是在网上截的图,感谢原作者。)

m序列反馈系数表

然后在表上查到你要生成的m序列的长度,比如说15,即周期P为15。从表上能看出,需要的寄存器级数为4,即有4个寄存器。然后反馈系数Ci为23。注意:这里是八进制,所以23对应的二进制位010 011,然后二进制中最高位的0不需要,所以序列位10011,这里有人就好奇了,为什么是5位,但是寄存器是4个?因为这里的Ci中的i是从0开始的,而且C0=1是确定的,所以,需要传到函数中的系数为[0 0 1 1]。

综上:调用方式是,首先把函数放在当前工作空间,然后输入

mseq([0 0 1 1])

返回的结果就是15位的m序列,如下:

这里写图片描述

最后再补充几点:

第一,关于寄存器的形状还有系数,我截了个图,(从百度文库上找的,感谢原作者,m序列原理)大家参考。

这里写图片描述

第二,八进制变二进制,可以打开windows下面的计算器,然后选择 查看->程序员,即可看到二进制,八进制,十进制和十六进制的转换。但是一般来说熟练了,十六进制与二进制、八进制与二进制的转换直接就能看出来。

这里写图片描述

第三,由于寄存器初始的值设置的不同(程序中默认为[1 0 0 …… 0 1],千万不能全部为0,一般来说有两个1就没问题),生成的m序列看似不一样,其实是一样的。只要通过循环移位,能够变成一样,就是正确的m序列。

相关阅读

oracle存储过程或函数的调试过程

第一步:选择调试模式找到数据库里functions包下需要调试的函数或存储过程,然后选中这个函数(或存储过程),单击右键,出现如下图所示,选中

Makefile中的patsubst函数

$(patsubst 原模式, 目标模式, 文件列表) 如:在$(patsubst %.c,%.o,$(dir) )中,patsubst把$(dir)中的变量符合后缀是.c的全部替换成.

matlab中产生随机数的函数

目录 1. randsrc 2. rand 3. randint 4. randperm 5. intersect 6. cumsum 7. rectpuls 1. randsrc out = randsrc out = randsr

oracle 时间函数 TO_DATE

https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions183.htm TO_DATE(char [, fmt [, 'nlsparam' ] ]) 参数

java函数式编程之Predicate

描述:Predicate< T>接口接受一个T类型参数,返回一个boolean值。 源码: public interface Predicate<T> { boolean test(T t); }

分享到:

栏目导航

推荐阅读

热门阅读