Matlab生成prbs7的代码

最近的一个客户需求,客户想看一下我们的产品产生的prbs并进行一些分析。

我在“”豆包“”这里找到了一个pbs的matlab的生成程序,效果就是连续生成prbs7,然后每次都在原来的基础之上添加。

生成的matlab的PRBS7代码修改如下:

% 初始化寄存器
registers = zeros(1, 7);
registers(1) = 1;
registers(2) = 1;
registers(3) = 1;
registers(4) = 1;
registers(5) = 1;
registers(6) = 1;
registers(7) = 1;

% 生成 PRBS7 序列
output = zeros(1, 127);
for i = 1:127
    output(i) = registers(7);
    temp = registers(6);
    for j = 7:-1:2
        registers(j) = registers(j - 1);
    end
    registers(1) = xor(output(i), temp);
end

% 将二进制序列转换为十六进制字符串
% 这里存在几个问题:

% 1. num2str() 函数会在数字之间添加空格,这会导致 bin2dec() 无法正确解析
% 2. bin2dec() 函数只能处理最多 52 位的二进制数,而我们有 127 位
% 3. 直接将整个序列转换为十进制再转十六进制可能会导致精度损失

% 正确的方法应该是每 4 位二进制数转换为一个十六进制字符
hexOutput = '';
for i = 1:4:length(output)
    chunk = output(i:min(i+3, end));
    if length(chunk) < 4
        chunk = [chunk, zeros(1, 4-length(chunk))];  % 补零
    end
    hexDigit = dec2hex(bin2dec(num2str(chunk, '%d')));
    hexOutput = [hexOutput, hexDigit];
end

% 将十六进制内容保存到 txt 文件
fid = fopen('PRBS7_hex_output.txt', 'a+');
fprintf(fid, '%s\n', hexOutput);
fclose(fid);

效果:

分析:

1.从生成的数据可知,每次Prbs7生成的内容都是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值