添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
本文介绍了m序列,一种最长线性移位寄存器序列,通过本原多项式在硬件中生成,具有特定的循环自相关特性。m序列优选对的互相关函数具有三值特性,而Gold序列是两个m序列优选对模二加的结果,保持了三值互相关特性。此外,平衡Gold序列在扩频通信中有优势,其1的数目比-1多一个。文章提供了MATLAB代码实现m序列、循环自相关函数、Gold序列以及平衡序列的生成和计算。 摘要生成于 ,由 DeepSeek-R1 满血版支持, x 6 + x 4 + x 3 + x + 1 产生的m序列的循环自相关函数如下图所示。
在这里插入图片描述

MATLAB生成M序列和计算循环自相关函数

function p=PnCode(polynomial,reg)
%  PN码产生器函数
%  polynomial为本原多项式,从左到右依次为高位到低位,且最高位与最低位必须为1;低位表示延时一个周期,高位依次顺延,例如[1 0 0 1 0 1]
%  reg为置寄存器初始值,也相当于PN码的初始相位,左边为高位,如[1 0 0 1 0]表示延时5个周期的寄器和2个周期的寄存器初值为1
grade=length(polynomial)-1;%根据多项式计算延时级数
PN_Length=(2^grade-1);     %计算PN码一个周期的长度 
n=0;                         
c=zeros(1,grade);
for i=grade:-1:1
    if polynomial(i)==1
        n=n+1;
        c(n)=grade+1-i;
%产生一个周期的PN码  
p = zeros(1,PN_Length);
for i=1:PN_Length
    %从最高延时的寄存器中输出PN码
    p(i)=reg(1);
    %完成各抽头寄存器取值的模2加
    m = mod(reg*polynomial(1:grade)',2);
    %寄存器的值依次移位
    reg(1:(grade-1)) = reg(2:grade);
    reg(grade)=m;
function [r,lags] = periodic_corr(x,y)
% returns the periodic cross-correlation or autocorrelation of two discrete-time sequences.
% Rxy(m) = sum(i) x(i)Y((i+m) mod L)
% x input array
% y input array
% r periodic cross-correlation or autocorrelation
% lags Lag indices
if size(x,2) == 1 && ~isscalar(x)
    x = x';
if size(y,2) == 1 && ~isscalar(y)
    y = y';
if size(x,2)~=size(y,2)
    error(message('x y dimension mismatch'));
L = size(x,2);
r = zeros(1,2*L-1);
for m = 1:L
    if m == 1
        r(L) = x*y'/L;
        r(L+m-1) = x*y'/L;
        r(m-1) = x*y'/L;
    y = circshift(y,-1);
lags = -(L-1):L-1;

M序列优选对

  对于由两个 \lvert R_{a,b}(\tau) \rvert_{max}=\begin{cases} 2^{\frac{n+1}{2}}+1,\quad n为奇数\\ 2^{\frac{n+2}{2}}+1, \quad n为偶数且不是4的倍数 \end{cases} \tag{1} Ra,b(τ)max={22n+1+1,n22n+2+1,n4(1)
  m序列优选对具有三值互相关特性,即它们的循环互相关函数只能取三个值。 n为偶数且不为4的倍数时,一族Gold序列中平衡序列出现的概率为75%,非平衡序列为25%。

MATLAB生成Gold序列和寻找平衡序列

MATLAB中可以用comm.GoldSequence函数生成Gold序列,具体用法可以参考help文档。找平衡序列的方法是暴力枚举。

function [g,balanced] = GoldCode(polynomial1,polynomial2)
% Generate Gold sequence
% polynomial1、polynomial2 primitive polynomial, lists the coefficients of
%                          the polynomial in descending order of powers.  
%                          The first and last elements must equal 1, and
%                          the length of this vector requires a value of
%                          n+1, where n is the degree of the primitive polynomial.
%                          polynomial1 and polynomial2 generate a pair of m
%                          sequences which is a preferred pair 
% g Gold sequences
% balanced index of balanged Gold sequence in g
if length(polynomial1) ~= length(polynomial2)
     error(message('polynomial1 polynomial2 dimension mismatch'));
grade=length(polynomial1)-1;%根据多项式计算延时级数
gold_length=(2^grade-1);    %计算PN码一个周期的长度
g = zeros(gold_length+2,gold_length);
balanced = zeros(gold_length+2,1);
for n = -2:gold_length-1
    goldseq = comm.GoldSequence('FirstPolynomial',polynomial1,...
                                'SecondPolynomial',polynomial2,...
                                'FirstInitialConditions',[zeros(1,grade-1) 1],...
                                'SecondInitialConditions',[zeros(1,grade-1) 1],...
                                'Index',n,'SamplesPerFrame',gold_length);
    x = goldseq()';
% 	g(n+3,:) = 2*x-1;
    g(n+3,:) = x;
    if length(find(x == 1)) == (gold_length+1)/2
        balanced(n+3) = 1;
balanced = find(balanced == 1);

参考:Gold序列与m序列仿真应用
辛肖明, 陈琼. m序列优选对及平衡Gold码序列[J]. 北京理工大学学报, 1990, 10(4):106-113.

MATLAB实现m序列生成MATLAB 2021a适用) 1.在MATLAB中新建脚本,命名为mseq.m,输入以下代码: function mseq = mseq(fbconnection) n=length(fbconnection); N=2^n-1; register=[zeros(1,n-1) 1]; %移位寄存器的初始状态 mseq(1)=register(n); %m序列的第一个输出码元 for i=2:N newregister(1)=mod(sum(fbconne
matlab生成m序列的方法 文章目录matlab生成m序列的方法1.m序列基本知识点2.matlab产生m序列2.1根据产生原理编写生成函数2.1.1生成m序列的函数:2.1.2调用已编写函数生成m序列2.2利用idinputidinputidinput函数 m序列属于伪随机序列的一种。在通信领域应用较为广泛。由于其具有很好的伪噪声特性,因此在保密通信中,可以将其应用在高可靠性的保密通道中。另外,雷达领域也有广泛应用,伪随机相位编码脉冲/连续波雷达中用到的调制信号正是m序列。 1.m序列基本知识点
MATLAB仿真m序列Gold序列Kasami序列扩频码性能分析及生成方法探究,MATLAB仿真分析m序列Gold序列与Kasami序列的扩频码性能 该程序涵盖生成与特性分析,助您深入理解与选

【后面会涨价】通信信号参数估计、调制解调算法 MATLAB、C/C++实现 从信号的调制生成、发射,到信号的接收解调,全流程均有涉及,包含大量的MATLAB或C代码,通过此博客可以快速了解通信信号处理。 订阅前请先看置顶博客:《调制解调算法基础》专栏介绍导航与『声明』

(1)订阅即可赠送本专栏指定代码一份,长期更新;(100篇以上) (2)代码获取1:点击博客文章上部超链接直接付费下载; (3)代码获取2:若需要代码或其他服务,凭订阅订单信息即可每次抵扣20元; (4)售后服务:完整代码包运行,提供运行操作视频,适合小白; (5)联系方式:扫描文章底部QQ二维码;