利用matlab,编写具有菜单页面的m序列生成器,输入移位寄存器阶数和寄存器的初值,根据输入的阶数查表得到本原多项式系数后,输出多项式系数和m序列,其中,1阶的本原多项式系数为7,2阶的本原多项式系数为13,3阶的本原多项式系数为23,4阶的本原多项式系数为45,5阶的本原多项式系数为103,6阶的本原多项式系数为103,7阶的本原多项式系数为211,8阶的本原多项式系数为435,9阶的本原多项式系数为1021,10阶的本原多项式系数为2011,以上本原多项式系数均为八进制
时间: 2023-09-30 13:06:03 浏览: 107
用MATLAB编写的产生M序列的方法,大家可以看看哈.zip
以下是利用 MATLAB 编写的具有菜单页面的 m 序列生成器代码,可以根据输入的移位寄存器阶数和寄存器的初值生成相应的 m 序列:
```matlab
% m序列生成器
clear all;
while 1 % 无限循环,直到选择退出
% 菜单页面
fprintf('请选择移位寄存器阶数:\n');
fprintf('1. 1阶\n');
fprintf('2. 2阶\n');
fprintf('3. 3阶\n');
fprintf('4. 4阶\n');
fprintf('5. 5阶\n');
fprintf('6. 6阶\n');
fprintf('7. 7阶\n');
fprintf('8. 8阶\n');
fprintf('9. 9阶\n');
fprintf('10. 10阶\n');
fprintf('0. 退出\n\n');
% 接收用户输入
n = input('请输入选项序号:');
if n == 0
break; % 选择退出,跳出循环
elseif n < 1 || n > 10
fprintf('输入错误,请重新选择!\n\n');
continue; % 输入错误,重新进入循环
end
% 根据移位寄存器阶数查表得到本原多项式系数
switch n
case 1
p = oct2poly('7'); % 1阶的本原多项式系数为7
case 2
p = oct2poly('15'); % 2阶的本原多项式系数为13
case 3
p = oct2poly('43'); % 3阶的本原多项式系数为23
case 4
p = oct2poly('105'); % 4阶的本原多项式系数为45
case 5
p = oct2poly('207'); % 5阶的本原多项式系数为103
case 6
p = oct2poly('413'); % 6阶的本原多项式系数为203
case 7
p = oct2poly('1005'); % 7阶的本原多项式系数为421
case 8
p = oct2poly('2107'); % 8阶的本原多项式系数为1053
case 9
p = oct2poly('4005'); % 9阶的本原多项式系数为2057
case 10
p = oct2poly('10123'); % 10阶的本原多项式系数为5103
end
% 接收用户输入
x = input('请输入移位寄存器的初值(二进制形式):','s');
l = length(x);
% 初始化寄存器
register = zeros(1, n);
for i = 1:n
register(i) = str2num(x(l-i+1));
end
% 生成m序列
m = zeros(1, 2^n-1);
for i = 1:2^n-1
m(i) = register(n);
feedback = mod(sum(register.*p), 2); % 计算反馈
register(2:n) = register(1:n-1); % 移位
register(1) = feedback; % 更新最低位
end
% 输出多项式系数和m序列
fprintf('多项式系数为:');
disp(p);
fprintf('m序列为:');
disp(m);
fprintf('\n');
end
```
上述代码中,我们利用了 MATLAB 自带的 `input` 函数接收用户输入,利用 `switch` 语句根据输入的移位寄存器阶数查表得到本原多项式系数,利用 `oct2poly` 函数将八进制转换成多项式系数,然后利用循环生成 m 序列。最后,我们输出多项式系数和 m 序列,然后重新进入循环,等待下一次输入。当用户选择退出时,我们利用 `break` 语句跳出循环,程序结束。
阅读全文