完整的m序列序列生成函数和调用
来源:互联网 发布:英国大学精算 知乎 编辑:程序博客网 时间:2024/06/06 00:52
上午写了m序列的产生方法(点这里),下午我又把调用方法简单化了一下,把所有的代码贴上来,供大家参考。
mseq.m
生成m序列的主文件,调用的时候直接用生成系数的二进制或者八进制都行。
function [seq]=mseq(coef)%==========================================================================% 此函数用来生成最大长度m序列% coef为特征多项式向量%==========================================================================if 1 == length(coef) % 此时直接输入的是8进制的反馈系数,需要准换成2进制 coef = prepro(coef);endif sum(coef>1) % 如果转换出错,或者输入的时候虽然是个数组,但不是二进制的 error('WRONG! the parameter of function mseq is invalid!'); endm=length(coef);len=2^m-1; % 得到序列的长度 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); registers(2:length(registers)) = registers(1:length(registers)-1); registers(1)=backQ;endend
prepro.m
mseq函数输入的预处理函数。
function ret = prepro(coef)%==========================================================================% 仅用于mseq.m% 对输入的八进制数进行预处理,得到可以符合规则的反馈系数%==========================================================================bin = oct2bin(coef);while 0 == bin(1) bin = bin(2:length(bin));endret = bin(2:length(bin));end
oct2bin.m
把八进制数转换成二进制。这里的八进制数是用十进制表示的,如果超过八,则会报错(是因为我使用的表只有八行)。二进制直接放在一个数组中。
function bin = oct2bin(coef)%==========================================================================% 把8进制数(用十进制表示的)变成2进制数,并且存放在数组中%==========================================================================tmpData = [0 0 1; 0 1 0; 0 1 1; 1 0 0; 1 0 1; 1 1 0; 1 1 1; 0 0 0];bin = [];while coef ~= 0 tmp = mod(coef,10); if 0 == tmp tmp = 8; end bin = [tmpData(tmp,:) bin]; coef = floor(coef/10);endend
调用示例
阅读全文
0 0
- 完整的m序列序列生成函数和调用
- 基于MATLAB的m序列产生函数及其调用方法
- [Matlab] M序列的生成,自相关和谱密度
- m序列生成电路
- 完整的WebRTC调用序列图
- m序列,Gold序列,Walsh函数的区别
- 最小m序列和
- MySQL 序列生成函数
- r语言中生成序列的函数
- 手动调用MFC的序列化函数
- M序列
- M序列
- m序列
- m序列
- 在matlab中生成m序列
- 用verilog实现m序列生成
- 最大连续长度不超过m的子序列和
- 从数字1到N的序列中添加+或-,使得序列的和等于M
- 深入浅出MySQL笔记(二)
- 两种开源聊天机器人的性能测试(一)——ChatterBot
- jq代码学习9--合成事件 fl ch4 105
- java小程序——提取地址中的文件名
- 嵌入式多路温湿度监控系统(十一boa网页界面)
- 完整的m序列序列生成函数和调用
- chroot ubuntu 16.04 on android
- 关于数组输入--类似于C那种动态分配数组内存的JAVA解决
- 大数据 第一节课 linux基础 基本的操作
- Jzoj3895 数字对
- Qt定时器的应用,实现时钟的状态
- Gym 101142G Gangsters in Central City【思维+Lca】
- 高级C语言教程-C语言函数setjmp()函数
- bzoj1731 [Usaco2005 dec]Layout 排队布局(差分约束+spfa)