Minn Algorithm code
Algorithm principle
Training sequence Structure T=[b B-b-b], where B represents a sequence of symbols resulting from pn,ifft transformations of complex pseudo-random sequences of length N/4
(Original interpretation): B represent samples of length L=N/4 genereated by N/4 Point IFFT of \ (n_u/4\) length modulated data of a P N sequence. That is, B is a sequence of length N/4, which is obtained by Ifft by encoding a PN sequence.
\ (\bigstar\) Minn: In order to eliminate the top-level effect of SCHMIDL algorithm, Minn and other people changed the structure of training queue, and redesigned a new synchronous metric function, although the flat-top effect of SCHMIDL algorithm was successfully eliminated, the synchronization autocorrelation peak became sharp. The accuracy and reliability of the timing synchronization estimation are improved, but the correlation peaks are not sharp enough, and there are many secondary peaks on both sides of the peak of the synchronous metric function curve, and under the condition of poor channel environment, the timing synchronization estimation will be affected greatly under the condition of low Snr.
Reference documents
Minn H, Zeng M,bhargava V k.on timing offser estimation for OFDM Systems[j]. IEEE commun.lett.2000,4 (7): 242-244.
\[m (d) =\frac{\left | P (d) \right |} {r^{2} (d)}^{2}\]
\[p (d) =\SUM_{K=0}^{1}\SUM_{M=0}^{N/4 -1}r^{*} (D+m+\frac{nk}{2}) R (d+m+\frac{n}{4} + \frac{nk}{2}) \]
\[r (d) =\sum_{k=0}^{1}\sum_{m=0}^{n/4-1}\left | R (d+m+\frac{n}{4} + \frac{nk}{2}) \right |^{2}\]
The obtained D corresponds to the starting position of the training sequence (which does not contain a loop prefix).
%********************schmidl algorithm*******************%example:% If% X = rand (2,3,4); % then% d = Size (X) returns d = [2 3 4]% [M1,M2,M3,M4] = size (X) returns m1 = 2, m2 = 3, M3 = 4, m4 = 1% [M,n] = size (X) returns m = 2, n =% m2 = size (x,2) returns m2 = 3%close all ; Clear all; CLC % parameter definition n=256; %fft/ifft number of points or sub-carriers (nu=n) NG=N/8; The length of the% loop prefix (the length of the protection interval) ns=ng+n; % includes the symbol length of the cyclic prefix%************ using the table-checking method to generate complex random sequence ********************** qamtable=[7+7i,-7+7i,-7-7i,7-7i]; Buf=qamtable (Randi ([0,3],n/2,1) +1); % plus 1 is for subscript may be 0 illegal%************* in the position of an odd subcarrier insert 0 *********************zj: Is it an even number? X=zeros (n/2,1); index = 1; For N=1:2:N/2 x (n) =buf (index); index=index+1; End %************** uses Ifft transform to generate Schmidl training symbols *************** sch = Ifft (x); %[a a] in the form of Sch2=[sch; ( -1). *sch]; %***************** adds an empty symbol and a suffix symbol ************* src = qamtable (Randi ([0,3],n,1) +1). sym = Ifft (src); Sig =[zeros (n,1) sch2 sym]; %******************Add loop prefix ************************* TX =[sig (N-ng +1:n,:); sig]; %*********************** through channel *************************** recv = Reshape (tx,1,size (tx,1) *size (tx,2)); %size 1 represents rows, 2 represents columns, number of backwards from%, and exceeds for 1%RECV1 = AWGN (recv,1, ' measured '); %recv2 = AWGN (recv,5, ' measured '); %recv3 = AWGN (recv,10, ' measured '); %***************** Calculating Symbol Timing ***************************** P=zeros (1,2*NS); R=zeros (1,2*ns); %p1=zeros (1,2*ns); %r1=zeros (1,2*ns); P2=zeros (1,2*ns); R2=zeros (1,2*ns); %p3=zeros (1,2*ns); %r3=zeros (1,2*ns); For d = Ns/2+1:1:2*ns to K=1:2 for M=0:1:n/4-1 p (D-NS/2) = P (D-NS/2) + Conj (recv (d+m+ (k-1) *N/2)) *recv (d+n/ 4+ (k-1) *n/2+m); R (D-NS/2) = R (D-NS/2) + Power (ABS (recv (d+n/4+ (k-1) *n/2+m)), 2); %P1 (D-NS/2) = P1 (D-NS/2) + Conj (RECV1 (d+m)) *recv1 (d+n/2+m); %R1 (D-NS/2) = R1 (D-NS/2) + Power (ABS (RECV1 (D+N/2+M)), 2); %P2 (D-NS/2) = P2 (D-NS/2) + Conj (Recv2 (d+m)) *recv2 (d+n/2+m); %R2 (D-NS/2) = R2 (D-NS/2) + Power (ABS (RECV2 (D+N/2+M)), 2); % P3 (D-NS/2) = P3(D-NS/2) + Conj (Recv3 (d+m)) *recv3 (d+n/2+m); % R3 (D-NS/2) = R3 (D-NS/2) + Power (ABS (RECV3 (D+N/2+M)), 2); End EndEnd M=power (ABS (P), 2)./power (ABS (R), 2); %m1=power (ABS (P1), 2)./power (ABS (R1), 2); %m2=power (ABS (P2), 2)./power (ABS (R2), 2); %m3=power (ABS (P3), 2)./power (ABS (R3), 2); [A B]=max (M)%********************** drawing ****************************** figure (' Color ', ' W '); d=1:1:400; Figure (1);p lot (D,m (d)); Grid on; Axis ([0,400,0,1.1]); Title (' Minn Algorithm '); Xlabel (' Time (sample) '); Ylabel (' Timing Metric '); %legend (' No noise ', ' snr=1db ', ' snr=5db ', ' snr=10db ');
Minn algorithm of OFDM synchronization algorithm