m伪随机码的产生matlab,[转载]Matlab 伪随机信号的产生(M序列)

这里主要介绍两种方法,一是使用m文件编辑,二是用simulink产生

一、用m文件编辑

Np=63;%循环周期

delta_T = 1;%时钟节拍

a=1;%幅度

%初始化M序列

M(1)=1;

M(2)=0;

M(3)=0;

M(4)=1;

M(5)=1;

M(6)=0;

M_XuLie(Np) = 0;

for n = 1 : Np

temp = xor(M(6), M(5));

if(temp == 0)

M_XuLie(n) = a;

else

M_XuLie(n) = -a;

end

M(6) =

M(5);

M(5) =

M(4);

M(4) =

M(3);

M(3) =

M(2);

M(2) =

M(1);

M(1) =

temp;

end

figure(4)

stairs(M_XuLie)

ylim([-2 2])

运行结果:

a4c26d1e5885305701be709a3d33442f.png

说明:

1.原理:由于是用代码书写,可能原理表达不是很直观,后面会以仿真形式给出原理

2.周期:若有N个移位寄存器,那么周期为2^N-1

3.周期的延拓:

r = 3; % 周期数

u=repmat(M_XuLie,1,r+1);%将M序列赋给输入,作为输入信号

二、使用simulink产生M序列

a4c26d1e5885305701be709a3d33442f.png

1 选6个移位寄存器,就是Z分之1那个 按顺序排列好,初始条件(initial conditions)全都设为1

2 先把这6个移位寄存器链接起来

第一个输出连第二个输入,以此类推到第六个接OUT,out这里再接一个scope以便观察信号波形或者接到工作空间(本例是接到工作空间中)。按照如下方法设置变量名和输出格式。

注意:尽量选矩阵形式输出,否则调用不方便。

a4c26d1e5885305701be709a3d33442f.png

3 选一个logical operator,并从设置中调成XOR,2输入端

4 继续连线

5 设置参数,主要是设置步长和总运行时间(点击菜单simulation-configuration

parameters设置)

a4c26d1e5885305701be709a3d33442f.png

6 点击运行 scope中显示的便是m序列!或者在命令行中输入stairs(M_seque)

运行结果:

a4c26d1e5885305701be709a3d33442f.png

注:事实上,用这种方法在实际使用中存在一些问题,就是输出信号是bool型的,即是逻辑序列,无法作为传递函数的输入使用,如果是在m文件中可以通过double等方法进行转换,simulink应该是有方法转换的但还未做相关查询。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值