matlab生成m序列(数字图像水印相关)

ops/2024/11/14 2:23:42/

m序列

定义

m序列是一种重要的伪随机序列(PN序列),它是由线性反馈移位寄存器产生的周期最长的序列,其规律性强,有很好的自相关性和较好的互相关特性。

周期由什么决定?

既然m序列是周期最长的序列(对于某一级数而言),那么如何寻找这种序列呢?实际上这与抽头的设计有关,抽头简单理解就是每一个线性反馈移位寄存器的反馈函数的线性系数,当这个线性系数恰好是对应级数本原多项式的时候,周期是最长的。(群论中的知识)

Matlab实现
抽头生成

m序列对应的抽头实际上是本原多项式的系数,假设我们生成7级的m序列:

matlab">primpoly(n,'all'); %n是级数

需要注意生成出来的是10进制、带多项式末尾1的数字,而抽头中不需要末尾1,并且需要翻转,注释在下节。

这里举一个例子,比如要生成6阶m序列,首先调用primpoly(6,'all')

image-20241110125428451

如果选择 D 6 + D 1 + 1 D^6+D^1+1 D6+D1+1,调用dec2bin(67),得到1000011,手动去除末尾1,并翻转,得到100001,这样我们传入下一节mseq函数的参数就是100001

img

m序列生成
matlab">function mseq = mseq(fbconnection)%fbconnection就是抽头% 这里是按照从左到右寄存器序号递增的顺序,所以右边对应高阶,左边对应低阶n=length(fbconnection);N=2^n-1;register=[zeros(1,n-1) 1]; %移位寄存器的初始状态mseq(1)=register(n);       %m序列的第一个输出码元for i=2:Nnewregister(1)=mod(sum(fbconnection.*register),2);%输入由反馈函数得到for j=2:nnewregister(j)=register(j-1);%移位endregister=newregister;%移位寄存器状态更新mseq(i)=register(n);%输出end
end
参考链接

[1] https://www.zhihu.com/question/591327469/answer/2987694053

[2] https://www.cnblogs.com/xytang-mini-juan/p/17153103.html


http://www.ppmy.cn/ops/132551.html

相关文章

[vulnhub] DarkHole: 2

https://www.vulnhub.com/entry/darkhole-2,740/ 端口扫描主机发现 探测存活主机,185是靶机 # nmap -sP 192.168.75.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-08 18:02 CST Nmap scan report for 192.168.75.1 Host is up (0.…

数学基础 -- 线性代数之线性无关

线性无关 在线性代数中,线性无关列指的是矩阵中的列向量之间不满足线性组合关系,即无法通过其他列向量的线性组合来表示某一个列向量。简单地说,一组向量是线性无关的,意味着其中任何一个向量不能由其他向量生成。 1. 线性无关的…

让测试用例更有价值的方法

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 本文将从更高一层的维度来讨论测试用例如何能够帮助测试人员进行更好的测试,提升测试用例的价值。 所有测试用例编写的前提,是测试人…

[ DOS 命令基础 2 ] DOS 命令详解-网络相关命令

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

EHOME视频平台EasyCVR视频融合平台支持哪些摄像机接入?监控摄像头镜头的种类有哪些?

在现代安防监控领域,视频融合平台扮演着至关重要的角色,它们不仅能够整合不同品牌和型号的摄像机,还能提供稳定可靠的视频流传输和高效的视频管理功能。EasyCVR视频融合平台以其卓越的兼容性和灵活性,逐渐成为构建复杂监控网络的首…

软件测试:测试用例详解

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、通用测试用例八要素   1、用例编号;    2、测试项目;   3、测试标题; 4、重要级别;    5、预置…

【数据结构实战】从零开始打造你的专属链表

🏝️专栏:【数据结构实战篇】 🌅主页:f狐o狸x 目录 一、链表的概念及结构 二、链表的分类 2.1 单向的或双向的 2.2 带头的或不带头的 2.3 循环或非循环 三、链表的实现 3.1 打印和动态申请一个结点 3.2 尾插一个数 3.3 头插一个…

ArrayList扩容机制

ArrayList的扩容机制是Java集合框架中的一个重要特性,它允许ArrayList在需要时自动增加其容量以容纳更多的元素。以下是关于ArrayList扩容机制的详细解释: 一、扩容触发条件 ArrayList的扩容通常发生在以下两种情况下: 添加元素时容量不足…