利用matlab,编写具有菜单页面的m序列生成器,输入移位寄存器阶数和初值,输出多项式系数和m序列,其中,1阶的本原多项式系数为7,2阶的本原多项式系数为13
时间: 2023-07-16 19:14:29 浏览: 45
以下是一个简单的 MATLAB 程序,可以生成 m 序列。请注意,该程序只支持 1 阶和 2 阶的本原多项式。
```matlab
while true
clc;
disp('M序列生成器');
disp('1. 生成1阶m序列');
disp('2. 生成2阶m序列');
disp('0. 退出程序');
choice = input('请选择:');
switch choice
case 1
n = input('请输入移位寄存器阶数:');
x = input('请输入移位寄存器初值(二进制):', 's');
x = str2num(x(:));
if length(x) ~= n
error('移位寄存器初值长度与阶数不符');
end
a = 7;
fprintf('多项式系数:%d\n', a);
fprintf('m序列:');
for i = 1:2^n - 1
fprintf('%d', x(n));
feedback = mod(sum(x([1 a])), 2);
x = circshift(x, [1 1]);
x(1) = feedback;
end
fprintf('\n');
case 2
n = input('请输入移位寄存器阶数:');
x = input('请输入移位寄存器初值(二进制):', 's');
x = str2num(x(:));
if length(x) ~= n
error('移位寄存器初值长度与阶数不符');
end
a = 13;
fprintf('多项式系数:%d\n', a);
fprintf('m序列:');
for i = 1:2^n - 1
feedback = mod(sum(x([2 a])), 2);
x = circshift(x, [1 1]);
x(1) = feedback;
fprintf('%d', x(n));
end
fprintf('\n');
case 0
return;
otherwise
disp('无效的选择,请重新输入。');
end
input('按任意键继续...');
end
```
该程序包含一个菜单页面,可以选择生成 1 阶或 2 阶 m 序列。对于每个选项,程序会要求输入移位寄存器的阶数和初值,并输出多项式系数和 m 序列。请注意,程序假设输入的初值是二进制数。如果输入的初值长度与阶数不符,则会出错。