function [out] = ms1(stg, taps, inidata, n)
out = zeros(1, 2^stg-1); %输出数组初始化
fpos = zeros(stg, 1); %寄存器状态初始化
fpos(taps) = 1; %寄存器状态载入 taps = [1,6]; fpos(taps) = [1,0,0,0,0,1]
for l = 1:2^stg-1
out(1,l) = inidata(stg); % 输亏滚出第一个点(十进制)笑碰
num = mod(inidata*fpos,2); % 乘法按照模2运算
inidata(2:stg) = inidata(1:stg-1); % 移位运算
inidata(1) = num; % 输出反馈给第一个寄存器碰空谈
end
1
选5个移位寄存器
其实我也不知道这名字正不正确,反正就是Z分之1那个
按顺序排列好,其中第二个初始条件(initial
conditions)设置为0,其他的默认为1.
2
先把这5个移位寄存器链接起来
第一个输出连第二个输入,以此类推到第五个接OUT,out这里再接一个scope以便观察信号波形
3
选一个logical
operator,并从设置中调成XOR,4输入端
4
继续连线,XOR的行粗输出端接第一个移位寄存器的输入端;然后把XOR输入端引到第二个移位寄存器和第三个移位寄神消存器的连线上,此时XOR还有3个输入端,分别像刚刚那样分别引到第三和第四,游带知第四和第五,第五和out的线上
5
点击运行
scope中显示的便是m序列,看吧
周期是31,1的个数比0多一个,而且没有重复波形!
不知道你要编程的还是simulink的....