⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 schmidle algorithm.txt

📁 此算法是基于PN序列的经典的定时同步算法
💻 TXT
字号:
%********************schmidl algorithm******************* 
%*******************by:sk 2008-5-22********************** 
close all; 
clear all; 
clc; 
%参数定义 
N=256;       %FFT/IFFT 变换的点数或者子载波个数(Nu<=N) 
Ng=N/8;      %循环前缀的长度 (保护间隔的长度) 
Ns=Ng+N;     %包括循环前缀的符号长度 
 
%************利用查表法生成复随机序列********************** 
QAMTable=[7+7i,-7+7i,-7-7i,7-7i]; 
buf=QAMTable(randint(N/2,1,4)+1); 
 
%*************在奇数子载波的位置插入零********************* 
x=zeros(N,1); 
index = 1; 
for n=1:2:N 
     x(n)=buf(index); 
     index=index+1; 
end; 
 
%**************利用IFFT变换生成Schmidl训练符号*************** 
sch = ifft(x);   %[A A]的形式 
 
%*****************添加一个空符号以及一个后缀符号************* 
src = QAMTable(randint(N,1,4)+1).'; 
sym = ifft(src); 
sig =[zeros(N,1) sch sym]; 
 
%**********************添加循环前缀************************* 
tx =[sig(N - Ng +1:N,:);sig]; 
 
%***********************经过信道*************************** 
recv = reshape(tx,1,size(tx,1)*size(tx,2)); 
recv1 = awgn(recv,1,'measured'); 
recv2 = awgn(recv,5,'measured'); 
recv3 = awgn(recv,10,'measured'); 
%*****************计算符号定时***************************** 
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 
    for m=0:1:N/2-1  
        P(d-Ns/2) = P(d-Ns/2) + conj(recv(d+m))*recv(d+N/2+m);  
        R(d-Ns/2) = R(d-Ns/2) + power(abs(recv(d+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 
end 
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); 
 
%**********************绘图****************************** 
figure('Color','w'); 
d=1:1:400; 
plot(d,M(d),d,M1(d),d,M2(d),d,M3(d)); 
grid on; 
axis([0,400,0,1.1]); 
title('schmidl algorithm'); 
xlabel('Time (sample)'); 
ylabel('Timing Metric'); 
legend('no noise','SNR=1dB','SNR=5dB','SNR=10dB'); 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -