gold序列实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Gold 序列实验报告
一、实验过程及分析
1 m 序列&G old 序列的产生
(1)选取本原多项式367()1f x x x x x =++++,产生m 序列。
fbconnection_m=[1 0 1 0 0 1 1];
mseq=m_sequence(fbconnection_m);
(2)由本原多项式37237()1&()1f x x x f x x x x x =++=++++生成的m 序列为m 序列优选对,以此优选对来产生Gold 序列。
fbconnection_op_1=[0 0 1 0 0 0 1]; fbconnection_op_2=[1 1 1 0 0 0 1];
goldseq=gold_seq(fbconnection_op_1,fbconnection_op_2);
2 m 序列的相关特性
-150
-100-50
050100150
k
R (k )
autocorrelation function of m sequence
图1 m 序列自相关函数
k
R (k )
cross-correlation function of m sequence
图 2 m 序列互相关函数
3 G old 序列的相关特性
k
R (k )
autocorrelation function of gold sequence
图3 G old 序列自相关函数
-20-15-10-50
5
10
15
k
R (k )
cross-correlation function of gold sequence
cross-correlation function of gold sequence
图4 G old 序列互相关函数
图2-5 m 序列&G old 序列最小,最大相关值
4 m 序列&G old 序列相关特性比较
-200
-100
0100
200
-20020406080
100120
140k
R (k )
autocorrelation function of m sequence -200
-100
0100200
-20020406080
100120
140k
R (k )
autocorrelation function of gold sequence
图6 m 序列&G old 序列自相关函数比较
-200
-100
0100
200
-50-40-30-20-100
1020
30k
R (k )
cross-correlation function of m sequence -200
-100
0100200
-20-15
-10-50
5
10
15k
R (k )
cross-correlation function of gold sequence
图7 m 序列&G old 序列互相关函数比较
gold 序列在时延不为0是三值的,这一点不如m 序列,在时延为0处具有与m 序列相
同的峰值特性。
显然,m 序列的自相关特性比Gold 序列的自相关特性要好。
Gold 序列具有更小的互相关峰值,显然Gold 序列的互相关特性比m 序列的互相关特性性能要好。
5 m 序列优选对
m 序列优选对也是gold 序列族中的gold 序列,所以其互相关函数与gold 序列一致。
k
R (k )
cross-correlation function of m sequence optimum pairs
图8 m 序列优选对的互相关函数
6 任选6个G old 序列,观察其自相关函数
k
R (k )
k
R (k )
k
R (k )
k
R (k )
k
R (k )
k
R (k )
图9 任选6个G old 序列的自相关函数
7 任选6对G old 序列,观察其互相关函数
k
R (k )
=17
k
R (k )
=17
k
R (k )
=17
k
R (k )
=17
k
R (k )
=17
k
R (k )
=17
图 10 任选6对G old 序列的互相关函数
任意两个Gold 序列互相关函数幅度小于或等于17,符合Gold 理论。
源码
(1) PN_Correlation.m
% =======================================
% PN_Correlation.m
% Correlation analysis of PN sequence
%
% Author: jzh (04011646 seu)
% Date: 2014.12.29
% =======================================
% clean
close all;
clear all;
clc;
% optimum pairs
fbconnection_op_1=[0 0 1 0 0 0 1];
fbconnection_op_2=[1 1 1 0 0 0 1];
% any m sequence for test
fbconnection_m=[1 0 1 0 0 1 1];
% gold sequence
mseq_op_1=m_sequence(fbconnection_op_1);
mseq_op_2=m_sequence(fbconnection_op_2);
goldseq=gold_seq(fbconnection_op_1,fbconnection_op_2);
% m sequence
mseq=m_sequence(fbconnection_m);
% mapping
mseq_op_1((mseq_op_1==0))=-1;
mseq_op_2((mseq_op_2==0))=-1;
goldseq((goldseq==0))=-1;
mseq((mseq==0))=-1;
m_auto=ccorr(mseq);
% any two m sequences except optimum pairs
m_cross=ccorr(mseq,mseq_op_1);
gold_auto=ccorr(goldseq(1,:));
gold_cross=ccorr(goldseq(1,:),goldseq(2,:));
m_op_cross=ccorr(mseq_op_1,mseq_op_2);
m_auto_max = max(m_auto)
m_auto_min = min(m_auto)
gold_auto_max = max(gold_auto)
m_cross_amplitude_max = max(abs(m_cross))
gold_cross_amplitude_max = max(abs(gold_cross))
N=length(mseq); % sequence length
abscissa=-N+1:N-1; % abscissa axis
figure(1);
plot(abscissa,m_auto);
xlabel('k'); ylabel('R(k)');
legend('autocorrelation function of m sequence'); title('autocorrelation function of m sequence');
figure(2);
plot(abscissa,m_cross);
xlabel('k'); ylabel('R(k)');
legend('cross-correlation function of m sequence'); title('cross-correlation function of m sequence');
figure(3);
plot(abscissa,gold_auto);
xlabel('k'); ylabel('R(k)');
legend('autocorrelation function of gold sequence'); title('autocorrelation function of gold sequence');
figure(4);
plot(abscissa,gold_cross);
xlabel('k'); ylabel('R(k)');
legend('cross-correlation function of gold sequence'); title('cross-correlation function of gold sequence');
figure(5);
subplot(1,2,1);
plot(abscissa,m_auto);
xlabel('k'); ylabel('R(k)');
title('autocorrelation function of m sequence'); subplot(1,2,2);
plot(abscissa,gold_auto);
xlabel('k'); ylabel('R(k)');
title('autocorrelation function of gold sequence');
figure(6);
subplot(1,2,1);
plot(abscissa,m_cross);
xlabel('k'); ylabel('R(k)');
title('cross-correlation function of m sequence');
subplot(1,2,2);
plot(abscissa,gold_cross);
xlabel('k'); ylabel('R(k)');
title('cross-correlation function of gold sequence');
figure(7);
plot(abscissa,m_op_cross);
xlabel('k'); ylabel('R(k)');
legend('cross-correlation function of m sequence optimum pairs');
title('cross-correlation function of m sequence optimum pairs');
% test autocorrelation of any gold sequence
for test_time = 1:6
ii = ceil(rand()*(N+2));
figure();
temp_gold_auto = ccorr(goldseq(ii,:));
plot(abscissa,temp_gold_auto);
xlabel('k'); ylabel('R(k)');
legend(strcat( 'seq number = ',num2str(ii)));
title('autocorrelation function of a random gold sequence');
end
% test cross-correlation of any 2 gold sequence
for test_time = 1:6
ii = ceil(rand()*(N+2));
jj=ceil(rand()*(N+2));
while jj == ii
jj=ceil(rand()*(N+2));
end
figure();
temp_gold_cross = ccorr(goldseq(ii,:),goldseq(jj,:));
plot(abscissa,temp_gold_cross);
xlabel('k'); ylabel('R(k)');
legend(strcat( 'seq1 number=',num2str(ii),', seq2 number=',num2str(jj)));
title(strcat('cross-correlation function of 2 random gold sequence:',...
' cross correlation amplitude MAX = ',...
num2str(max(abs(temp_gold_cross)))));
end
(2) m_sequence.m
% ==============================
% m_sequence.m
% generating m sequence
%
% Author: jzh (04011646 seu)
% Date: 2014.12.29
% ==============================
function mseq = m_sequence(fbconnection)
% ============================== m_sequence ============================== % generating m sequence
%
% Input:
% fbconnection: feedback connection responding to primitive polynomial
% Output:
% msequ: generation of m sequence, 1-by-N
% ========================================================================
n = length(fbconnection);
N = 2^n-1; % length of m sequence
register = [zeros(1,n-1) 1]; % initial state of shift register
% preallocating
newregister = zeros(1,n);
mseq = zeros(1,N);
mseq(1)=register(n);
for ii=2:N
% feedback
newregister(1) = mod(sum(fbconnection.*register),2);
% shift
for jj=2:n
newregister(jj)=register(jj-1);
end
register=newregister; % update
mseq(ii)=register(n); % output m sequence
end
(3) gold_seq.m
% ==================================
% gold_seq.m
% generating gold sequence family
%
% Author: jzh (04011646 seu)
% Date: 2014.12.29
% ==================================
function goldseq = gold_seq(fbconnection1,fbconnection2)
% =============================== gold_seq =============================== % generating gold sequence family
%
% Input:
% fbconnection1: feedback connection 1
% fbconnection2: feedback connection 2
% Note: fbconnection1 & fbconnection2 are optimum pairs
% Output:
% goldseq: generation of gold sequence family, (N+2)-by-N
% ========================================================================
mseq1 = m_sequence(fbconnection1);
mseq2 = m_sequence(fbconnection2);
N=2^length(fbconnection1) - 1;
goldseq = zeros(N+2,N); % preallocating
% different shift amount of two m sequence
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);
end
goldseq(N+1,:)=mseq1;
goldseq(N+2,:)=mseq2;
(4) ccorr.m
% =======================================
% ccorr.m
% calculate cross-correlation function
%
% Author: jzh (04011646 seu)
% Date: 2014.12.29
% =======================================
function r = ccorr(seq1,seq2)
% ================================ ccorr ================================= % calculate cross-correlation function
%
% Input:
% seq1: sequence 1
% seq2: sequence 2
% Note: (a) length of two sequence must be the same
% (b) two input sequence: calculate cross-correlation function
% (c) one input sequence: calculate autocorrelation function
% Output:
% r: correlation function, 1-by-2*N-1
% ========================================================================
% one input sequence: calculate autocorrelation
if nargin==1
seq2 = seq1;
end
N = length(seq1);
r = zeros(1,2*N-1); % preallocating
for k=-N+1:-1
seq2_shift = [seq2(k+N+1:N) seq2(1:k+N)];
r(N+k) = seq1*seq2_shift';
end
for k=0:N-1
seq2_shift = [seq2(k+1:N) seq2(1:k)];
r(N+k) = seq1*seq2_shift';
end。