m 伪随机序列 Matlab 源代码%5 阶 m 序列% 在 MATLAB 命令窗口输入以下:% fbconnection=[0 1 0 0 1];% mseq=m_sequence(fbconnection);% mseqfunction[mseq]=m_sequence(fbconnection)n=length(fbconnection);N=2^n-1;register=[zeros(1,n—1) 1]; %移位寄存器的初始状态mseq(1)=register(n); %m 序列的第一个输出码元for i=2:N newregister(1)=mod(sum(fbconnection。*register),2); for j=2:n, newregister(j)=register(j—1); end; register=newregister; mseq(i)=register(n);end 有关 m 序列的有一个作业要做一个和 m 序列相关的,先是形成自相关 m 序列,然后生成其自相关序列,两个都要产生图像.这些我都完成了.后面要用 matlab 图像处理,作出一个类似于示波器的调节旋钮的东西,点击一下就对自相关序列的延迟进行一些调节,调节至 m 序列和其自相关函数一样。各位牛人看看,给些指点,做了 3 天了,怎么都做不出来。 代码如下:%m 序列发生器及其自相关和功率谱密度clear all; close all;g = 19; % G = 10011state = 8;% state=1000L = 1000;%m 序列产生N = 15;mq = mgen(g,state,L);%求序列自相关ms = conv( 1-2*mq, 1-2*mq(15:—1:1) )/N;figure(1)subplot(222)stem(ms(15:end));axis([0 63 —0。3 1。2]);title('m 序列自相关序列’)%m 序列构成的信号(矩形脉冲)N_sample=8;Tc = 1;dt = Tc/N_sample;t = 0:dt:Tc*L—dt;gt = ones(1,N_sample);mt = sigexpand(1-2*mq,N_sample);mt = conv(mt,gt);figure(1)subplot(221);plot(t,mt(1:length(t)));axis([0 63 —1.2 1.2]);title('m 序列矩形成形信号’)st = sigexpand( 1—2*mq(1:15),N_sample );s = conv(st,gt);st = s(1:length(st));rt1 = conv(mt,st(end:-1:1))/(N*N_sample);subplot(223)plot(t,rt1(length(st):length(st)+length(t)-1) );axis([0 63 -0。2 1。2]);title(’m 序列矩形成形信号的自相关’);xlabel('t’);%sinc 脉冲Tc = 1;dt = Tc/N_sample;t = -20:dt:20;gt = sinc(t/Tc);mt = sigexpand(1-2*mq,N_sample);mt = conv(mt,gt);st2 = sigexpand( 1—2*mq(1:15),N_sample );s2 = conv(st2,gt);st2 = s2;rt2 = conv(mt,st2(end:-1:1))/(N*N_sample);subplot(224);t1 = —55+dt:dt:Tc*L—dt;%plot(t,mt(1:length(t)) );plot(t1,rt2(1:length(t1)));axis([0 63 —0。5 1.2]);title(’m 序列 sinc 成形信号的自相关');xlabel(’t’);