matlab生成m序列的函数(本原多项式产生所有m序列)

matlab⽣成m序列的函数(本原多项式产⽣所有m序列)
后期更新:matlab中产⽣m序列最简单的⽅法是调⽤idinput()函数,关于idinput()的具体⽤法可以在matlab中查看说明,这⾥举两
个简单的例⼦:
src = idinput(8191,'RBS')'; % 产⽣随机的⼆进制数据 1 -1
m = idinput(8191,'PRBS')';  % 产⽣长度为8192的m序列
m序列的基本⽣成原理这⾥就不做介绍了,今天闲着没事时候就⾏统计⼀下m序列中00和11的个数结果有点失望,竟然是完全相
等的(⼿动再最前⾯或者最后⾯补了⼀个0),并且00和11的个数是m序列长度的1/4(微⼩浮动)。我尝试了将m序列循环移位再统计,
结果还是只有这两组值下⾯是我通过本原多项式产⽣所有n=9和n=10的m序列并统计00和11个数的代码。其中 primpoly(9,'all')
这个函数可以获得所有n=9的m序列的本原多项式。
产⽣m序列的函数,输⼊参数为:m序列的本原多项式的系数矩阵
function[mseq]=m_sequence(fbconnection)
%    primpoly(9,'all')
n=length(fbconnection);
N=2^n-1;
newregister = zeros(1, n);
mseq = zeros(1, N);
register=[zeros(1,n-1) 1];  % 移位寄存器的初始状态
mseq(1)=register(n);        % m序列的第⼀个输出码元
for i=2:N
newregister(1)=mod(sum(fbconnection.*register),2);
for j=2:n
newregister(j)=register(j-1);
end
register=newregister;
mseq(i)=register(n);
end
end
下⾯这代码是我统计m中00和11个数的代码
clear all;
syms D;
%    primpoly(9,'all')
if 0
poly_str = [D^9+D^4+1, D^9+D^4+D^3+D^1+1, D^9+D^5+1, D^9+D^5+D^3+D^2+1, D^9+D^5+D^4+D^1+1, D^9+D^6+D^4+D^3+1, D^9+D^6+D^4+D^3+D^2+D    D^9+D^6+D^5+D^3+1, D^9+D^6+D^5+D^3+D^2+D^1+1, D^9+D^6+D^5+D^4+D^2+D^1+1, D^9+D^6+D^5+D^4+D^3+D^2+1, D^9+D^7+D^2+D^1+1,D^9+D^7+D    D^2+1, D^9+D^7+D^5+D^1+1, D^9+D^7+D^5+D^2+1, D^9+D^7+D^5+D^3+D^2+D^1+1, D^9+D^7+D^5+D^4+D^2+D^1+1, D^9+D^7+D^5+D^4+D^3+D^2+1, D^    +D^7+D^6+D^3+D^2+D^1+1, D^9+D^7+D^6+D^4+1, D^9+D^7+D^6+D^4+D^3+D^1+1, D^9+D^7+D^6+D^5+D^4+D^2+1, D^9+D^7+D^6+D^5+D^4+D^3+1, D^9    +D^4+D^1+1, D^9+D^8+D^4+D^2+1, D^9+D^8+D^4+D^3+D^2+D^1+1, D^9+D^8+D^5+D^1+1, D^9+D^8+D^5+D^4+1, D^9+D^8+D^5+D^4+D^3+D^1+1, D^9+D    D^6+D^3+D^2+D^1+1, D^9+D^8+D^6+D^4+D^3+D^1+1, D^9+D^8+D^6+D^5+1, D^9+D^8+D^6+D^5+D^3+D^1+1, D^9+D^8+D^6+D^5+D^3+D^2+1 ,D^9+D^8+    D^5+D^4+D^1+1, D^9+D^8+D^6+D^5+D^4+D^3+D^2+D^1+1, D^9+D^8+D^7+D^2+1, D^9+D^8+D^7+D^3+D^2+D^1+1, D^9+D^8+D^7+D^5+D^4+D^2+1, D^9+    D^7+D^5+D^4+D^3+1, D^9+D^8+D^7+D^6+D^2+D^1+1, D^9+D^8+D^7+D^6+D^3+D^1+1, D^9+D^8+D^7+D^6+D^3+D^2+
1, D^9+D^8+D^7+D^6+D^4+D^2+1,    D^8+D^7+D^6+D^4+D^3+1, D^9+D^8+D^7+D^6+D^5+D^1+1, D^9+D^8+D^7+D^6+D^5+D^3+1, D^9+D^8+D^7+D^6+D^5+D^4+D^3+D^1+1];
else
poly_str = [D^10+D^3+1, D^10+D^4+D^3+D^1+1, D^10+D^5+D^2+D^1+1, D^10+D^5+D^3+D^2+1, D^10+D^6+D^5+D^2+1, D^10+D^6+D^5+D^3+D^2+D^1+1,    D^10+D^7+1, D^10+D^7+D^3+D^1+1, D^10+D^7+D^6+D^2+1, D^10+D^7+D^6+D^4+D^2+D^1+1, D^10+D^7+D^6+D^5+D^2+D^1+1, D^10+D^7+D^6+D^5+D^    1, D^10+D^7+D^6+D^5+D^4+D^3+D^2+D^1+1, D^10+D^8+D^3+D^2+1, D^10+D^8+D^4+D^3+1, D^10+D^8+D^5+D^1+1, D^10+D^8+D^5+D^4+1, D^10+D^8+    D^4+D^3+D^2+1, D^10+D^8+D^6+D^1+1, D^10+D^8+D^6+D^4+D^2+D^1+1, D^10+D^8+D^6+D^5+D^3+D^1+1, D^10+D^8+D^7+D^2+1, D^10+D^8+D^7+D^3    D^1+1, D^10+D^8+D^7+D^4+D^2+D^1+1, D^10+D^8+D^7+D^5+1, D^10+D^8+D^7+D^6+D^2+D^1+1, D^10+D^8+D^7+D^6+D^5+D^2+1, D^10+D^8+D^7+D^6    D^4+D^2+D^1+1, D^10+D^8+D^7+D^6+D^5+D^4+D^3+D^1+1, D^10+D^9+D^4+D^1+1, D^10+D^9+D^4+D^2+1, D^10+D^9+D^5+D^2+1, D^10+D^9+D^5+D^4    D^1+1, D^10+D^9+D^6+D^1+1, D^10+D^9+D^6+D^3+D^2+D^1+1, D^10+D^9+D^6+D^4+D^3+D^1+1, D^10+D^9+D^6+D^5+D^4+D^3+1, D^10+D^9+D^6+D^5    D^3+D^2+D^1+1, D^10+D^9+D^7+D^3+1,
D^10+D^9+D^7+D^5+D^4+D^2+1, D^10+D^9+D^7+D^6+1, D^10+D^9+D^7+D^6+D^4+D^1+1, D^10+D^9+D^7+D^6    D^3+D^2+D^1+1, D^10+D^9+D^7+D^6+D^5+D^4+D^3+D^2+1, D^10+D^9+D^8+D^4+D^2+D^1+1, D^10+D^9+D^8+D^4+D^3+D^2+1, D^10+D^9+D^8+D^5+1,    D^9+D^8+D^5+D^4+D^3+1, D^10+D^9+D^8+D^6+D^2+D^1+1, D^10+D^9+D^8+D^6+D^3+D^2+1, D^10+D^9+D^8+D^6+D^4+D^2+1, D^10+D^9+D^8+D^6+D^    1, D^10+D^9+D^8+D^6+D^5+D^1+1, D^10+D^9+D^8+D^6+D^5+D^4+D^3+D^2+1, D^10+D^9+D^8+D^7+D^3+D^2+1, D^10+D^9+D^8+D^7+D^4+D^1+1, D^10
1, D^10+D^9+D^8+D^6+D^5+D^1+1, D^10+D^9+D^8+D^6+D^5+D^4+D^3+D^2+1, D^10+D^9+D^8+D^7+D^3+D^2+1, D^10+D^9+D^8+D^7+D^4+D^1+1
D^8+D^7+D^5+D^4+1, D^10+D^9+D^8+D^7+D^6+D^4+D^3+D^1+1, D^10+D^9+D^8+D^7+D^6+D^5+D^4+D^1+1, D^10+D^9+D^8+D^7+D^6+D^5+D^4+D^3+1 end
m00 = zeros(2, length(poly_str));
m11 = zeros(2, length(poly_str));
fd = fopen('m_','a+');  % 保存数据结果到⽂本⽂件
for i = 1 : 1 : length(poly_str)
tmp = fliplr(sym2poly(poly_str(i)));
s  = tmp(2 : length(tmp));
m_seq_tmp = m_sequence(s);
m_seq1 = [0 m_seq_tmp];
m00_cnt = 0;
m11_cnt = 0;
t1 = m_seq1(1 : 2 : length(m_seq1));
t2 = m_seq1(2 : 2 : length(m_seq1));
for k = 1 : 1 : length(t1)
tmp = t1(k) + t2(k);
if(tmp == 0)
m00_cnt = m00_cnt + 1;
elseif(tmp == 2)
m11_cnt = m11_cnt + 1;
end
end
m00(1, i) = m00_cnt;
m11(1, i) = m11_cnt;
fprintf(fd, '前置: 00 -> %d      11 -> %d            ', m00_cnt, m11_cnt);
m00_cnt = 0;
m11_cnt = 0;
m_seq2 = [m_seq_tmp 0];
t1 = m_seq2(1 : 2 : length(m_seq2));
t2 = m_seq2(2 : 2 : length(m_seq2));
for k = 1 : 1 : length(t1)
tmp = t1(k) + t2(k);
if(tmp == 0)
m00_cnt = m00_cnt + 1;
elseif(tmp == 2)
m11_cnt = m11_cnt + 1;
end
end
m00(2, i) = m00_cnt;
m11(2, i) = m11_cnt;
fprintf(fd, '后置: 00 -> %d      11 -> %d \n', m00_cnt, m11_cnt);
end
fclose(fd);
后来也统计了⼀下01和10的个数,这组的变化较⼤,总体浮动⼤概是00和11的两倍左右。

本文发布于:2024-09-20 16:57:50,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/732229.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:序列   个数   统计   本原   结果   函数   移位
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议