1、Gold序列实验报告 一、实验过程及分析 1 m序列&Gold序列得产生 (1)选取本原多项式,产生m序列。 fbconnection_m=[1 0 1 0 0 1 1]; mseq=m_sequence(fbconnection_m); (2)由本原多项式生成得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序列得
2、相关特性 图1 m序列自相关函数 图 2 m序列互相关函数 3 Gold序列得相关特性 图3 Gold序列自相关函数 图4 Gold序列互相关函数 图2-5 m序列&Gold序列最小,最大相关值 4 m序列&Gold序列相关特性比较 图6 m序列&Gold序列自相关函数比较 图7 m序列&Gold序列互相关函数比较 gold序列在时延不为0就是三值得,这一点不如m序列,在时延为0处具有与m序列相同得峰值特性。显然,m序列得自相关特性比Gold序列得自相关特性要好。 Gold序列具有更小得互相关峰值,显然Gold序列得互相关特性比m序列得互相关特
3、性性能要好。 5 m序列优选对 m序列优选对也就是gold序列族中得gold序列,所以其互相关函数与gold序列一致。 图8 m序列优选对得互相关函数 6 任选6个Gold序列,观察其自相关函数 图9 任选6个Gold序列得自相关函数 7 任选6对Gold序列,观察其互相关函数 图 10 任选6对Gold序列得互相关函数 任意两个Gold序列互相关函数幅度小于或等于17,符合Gold理论。 源码 (1) PN_Correlation、m % ======================================= % PN_Correl
4、ation、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 f
5、bconnection_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=
6、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
7、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('au
8、tocorrelation 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);
9、 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 o
10、f 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(
11、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'); y
12、label('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,:)
13、 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));
14、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=',num2s
15、tr(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:
16、 jzh (04011646 seu) % Date: 2014、12、29 % ============================== function mseq = m_sequence(fbconnection) % ============================== m_sequence ============================== % generating m sequence % % Input: % fbconnection: feedback connection responding to primitive polyno
17、mial % 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 newregis
18、ter = 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
19、 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) % ============================
20、 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 f
21、amily, (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_amou
22、nt = 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 %
23、 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 %
24、 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 % ===========================================
25、======================== % 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






