function[mseq]=m_sequence(fbconnection)
n=length(fbconnection)
N=2^n-1
register=[0 1 0 0 1 0 0 0 0 0 0]% 定扰让义移位寄存器大李塌的初始状态
% register=[1 1 1 0 1 1 0 0 0 0 0]%分别定义移位寄存器的三种初始状态
% register=[1 1 0 1 0 1 0 0 0 0 1]%分别定义移位寄存器的三种初始状态
mseq(1)=register(n)
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
伪随机gold序列.m文件:
function[goldseq]=gold_seq(fbconnection1,fbconnection2)
mseq1=m_sequence(fbconnection1)
mseq2=m_sequence(fbconnection2)
N=2^length(fbconnection1)-1
for shift_amount=0:N-1
shift_mseq2=[mseq2(shift_amount+1:N) mseq2(1:shift_amount)]%移位
goldseq(shift_amount+1,:)=mod(mseq1+shift_mseq2,2)%和移位后的序列进行模为2的相加
end
注:要生成gold序列,需滚圆要连两个m序列
是这样的吧好缓#include <stdio.h>
#include <纯早time.h>友裤模
char * randbin(char *str, int len)
{
int i
srand(time(NULL))
for(i=0i<leni++)
str[i] = rand() % 2 + 0x30
return str
}
int main()
{
char str[100] = {0}
printf("%s\n", randbin(str, 99))
return 0
}
clear all%清理工作空间close all%关闭所有图形
state=8%state=1000%常量赋值
L=1000%m序列团拦产生
N=15%常量赋值
mq=mgen(g,state,L)%m序列自相关
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序列自相关序列')%图形名称
你这个程序中mgen函数不是matlab自带的函数,可能指或袜是自写的。唯激
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)