利用matlab,编写具有菜单页面的m序列生成器,同时输入寄存器的初值和移位寄存器的阶数,根据输入的阶数查表得到本原多项式系数后,输出多项式系数和m序列,其中,2阶的本原多项式系数为7,3阶的本原多项式系数为11,4阶的本原多项式系数为19,5阶的本原多项式系数为37,6阶的本原多项式系数为67,7阶的本原多项式系数为137,8阶的本原多项式系数为285,9阶的本原多项式系数为529,10阶的本原多项式系数为1033
时间: 2023-09-30 15:08:37 浏览: 41
以下是利用 Matlab 编写具有菜单页面的 m 序列生成器的代码:
```matlab
% 清空命令窗口和工作空间
clc;
clear;
% 设置本原多项式系数
coefficients = [7, 11, 19, 37, 67, 137, 285, 529, 1033];
% 显示菜单
fprintf('====== m序列生成器 ======\n');
fprintf('1. 2阶\n');
fprintf('2. 3阶\n');
fprintf('3. 4阶\n');
fprintf('4. 5阶\n');
fprintf('5. 6阶\n');
fprintf('6. 7阶\n');
fprintf('7. 8阶\n');
fprintf('8. 9阶\n');
fprintf('9. 10阶\n');
fprintf('=========================\n');
% 输入阶数
order = input('请输入移位寄存器的阶数:');
% 根据阶数查找本原多项式系数
if order >= 2 && order <= 10
coefficient = coefficients(order-1);
else
error('输入的移位寄存器阶数不在范围内!');
end
% 输入寄存器初值
initial = input('请输入寄存器的初值(例如 [1 0 1]):');
% 计算移位寄存器长度
length = 2^order - 1;
% 计算本原多项式系数的二进制表示
coefficient_binary = de2bi(coefficient, order+1, 'left-msb');
% 初始化移位寄存器和 m 序列
register = initial;
m_sequence = zeros(1, length);
% 生成 m 序列
for i = 1:length
% 计算异或和
xor_sum = mod(sum(register .* coefficient_binary), 2);
% 记录输出
m_sequence(i) = register(end);
% 移位
register = circshift(register, [0 1]);
% 放入异或和
register(1) = xor_sum;
end
% 输出多项式系数和 m 序列
fprintf('本原多项式系数为:');
fprintf('%d ', coefficient_binary);
fprintf('\n');
fprintf('m序列为:');
fprintf('%d ', m_sequence);
fprintf('\n');
```
运行代码后,首先会显示菜单页面,让用户选择移位寄存器的阶数。然后,根据输入的阶数查找本原多项式系数,并要求用户输入寄存器的初值。接下来,程序会计算移位寄存器长度、本原多项式系数的二进制表示,并初始化移位寄存器和 m 序列。最后,程序会根据移位寄存器和本原多项式系数生成 m 序列,并输出多项式系数和 m 序列。