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

📄 timingrecovery.m

📁 个人硕士论文的关于数字接收机调制解调方面的matlab程序
💻 M
字号:
%% LOGN timing recovery  %%
% made by 65.0kg
clear all;
clc;
L              = 100; % symbol length
N              = 8; % symbol gene
fb             = 2400;
T              = 1/fb;
alpha          = 0.5;
d              = 4;
exp_time_count = 10; % experiment times
delay          = T/8; % time delay
v              = 0*fb; % frequency offset
snr_in_dB      = [5:1:30];% SNR,dB
psf            = rcosine(1,N,'fir/sqrt',alpha,d);
totaldataSamples   =  N*L;
totalSymbolSamples = totaldataSamples;
observ_length      = 50;
info               = randsrc(1,L,[0,pi/4,pi/2,3*pi/4,pi,5*pi/4,3*pi/2,7*pi/4]); % 8PSK
data               = exp(j.*info);
[dataout,t] = rcosflt(data,1,N,'filter',psf);
datafilt    = dataout.';
T_s         = datafilt(N*d+1:totalSymbolSamples+N*d); % transmission
for p =1:length(snr_in_dB)
    p
    for exp_time = 1:exp_time_count      
        exp_time
        for jj = 1:totaldataSamples
            T_ss(jj) = T_s(jj)*exp(j*2*pi*v*jj*T/N); % add frequency offset
        end;
        snr(p) = 10.^(snr_in_dB(p)/10);
        sgma   = sqrt(1/(2*snr(p)));
        noise  = sgma*(randn(1,totalSymbolSamples)+j.*randn(1,totalSymbolSamples));
        R_s    = T_ss+noise; % recieving
        R_s_delay = zeros(1,length(R_s));
        for i = 2:length(R_s)
            R_s_delay(i) = R_s(i-1); % add time delay
        end;
        [r_match_dataout,t] = rcosflt(R_s_delay,1,N,'fs/filter',psf);
        r_match_datafilt    = r_match_dataout.';
        r_match_data = r_match_datafilt(N*d+1:totalSymbolSamples+N*d);
        
        r_z    = (abs(r_match_data)).^2;
        r_F    = log(1+r_z.*((10.^(5/10))^2));
        
        r_length = length(r_F);
        observ_samples = N*observ_length;
        for kk=1:observ_samples:r_length-observ_samples+1
            for mm=1:observ_samples
                observ_sequence(mm) = r_F(kk+mm-1)*exp(-j*2*pi*(mm-1)/N);
            end
            time_esti((kk-1)/observ_samples+1) = -(T/(2*pi))*angle(sum(observ_sequence));
        end
        time_esti_h(p,exp_time)= mean(time_esti);
        time_esti_var(exp_time) = var((time_esti-delay)/T);
    end;
        time_esti_var_mean(p) = mean(time_esti_var);
        MCRB(p) = MCRB_LOGN(L,snr_in_dB(p),alpha);    
    end
semilogy(snr_in_dB,time_esti_var_mean,'b-o');
hold on;
semilogy(snr_in_dB,MCRB,'r-');
%grid on;
xlabel('Eb/N0,dB');
ylabel('Normalized Timing Variance');
legend('LOGN','MCRB',1);

⌨️ 快捷键说明

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