利用matlab,编写具有菜单页面的m序列生成器,输入移位寄存器阶数和寄存器的初值,根据输入的阶数查表得到本原多项式系数后,输出多项式系数和m序列,其中,2阶的本原多项式系数为7,3阶的本原多项式系数为11,4阶的本原多项式系数为19,5阶的本原多项式系数为37,6阶的本原多项式系数为67,7阶的本原多项式系数为137,8阶的本原多项式系数为285,9阶的本原多项式系数为529,10阶的本原多项式系数为1033,11阶的本原多项式系数为2093,12阶的本原多项式系数为4179,13阶的本原多项式系数为8219,14阶的本原多项式系数为17475,15阶的本原多项式系数为32771,16阶的本原多项式系数为69643,17阶的本原多项式系数为131081,18阶的本原多项式系数为262273,19阶的本原多项式系数为524327,20阶的本原多项式系数为1048585
时间: 2023-10-04 19:12:14 浏览: 116
用MATLAB编写的产生M序列的方法,大家可以看看哈~.zip
以下是一个基本的菜单页面的m序列生成器的MATLAB代码。你可以根据需要进行修改和扩展。
```matlab
% m序列生成器
clc;
clear;
disp('请选择移位寄存器阶数:');
disp('2. 2阶');
disp('3. 3阶');
disp('4. 4阶');
disp('5. 5阶');
disp('6. 6阶');
disp('7. 7阶');
disp('8. 8阶');
disp('9. 9阶');
disp('10. 10阶');
disp('11. 11阶');
disp('12. 12阶');
disp('13. 13阶');
disp('14. 14阶');
disp('15. 15阶');
disp('16. 16阶');
disp('17. 17阶');
disp('18. 18阶');
disp('19. 19阶');
disp('20. 20阶');
order = input('请输入移位寄存器阶数:');
if order < 2 || order > 20
error('移位寄存器阶数应在2到20之间!');
end
% 根据移位寄存器阶数查表得到本原多项式系数
if order == 2
coef = 7;
elseif order == 3
coef = 11;
elseif order == 4
coef = 19;
elseif order == 5
coef = 37;
elseif order == 6
coef = 67;
elseif order == 7
coef = 137;
elseif order == 8
coef = 285;
elseif order == 9
coef = 529;
elseif order == 10
coef = 1033;
elseif order == 11
coef = 2093;
elseif order == 12
coef = 4179;
elseif order == 13
coef = 8219;
elseif order == 14
coef = 17475;
elseif order == 15
coef = 32771;
elseif order == 16
coef = 69643;
elseif order == 17
coef = 131081;
elseif order == 18
coef = 262273;
elseif order == 19
coef = 524327;
elseif order == 20
coef = 1048585;
end
% 根据本原多项式系数生成移位寄存器的初值
init = ones(1, order);
for i = 1:order-1
init(i) = mod(coef^i, 2);
end
disp(['本原多项式系数:' num2str(coef)]);
disp(['移位寄存器的初值:' num2str(init)]);
% 生成m序列
mseq = init;
N = 2^order - 1;
for i = order+1:N
newbit = mod(sum(mseq([1, order-1])), 2);
mseq = [mseq(2:end), newbit];
end
disp(['m序列:' num2str(mseq)]);
```
运行程序后,输入移位寄存器阶数,程序会自动输出本原多项式系数、移位寄存器的初值和生成的m序列。
阅读全文