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

📄 main.m

📁 The Simulation Symbol Timing Synchronization using Matlab
💻 M
字号:
clear;
clc;
N=32;
CP=8;
timer=1000;
packetnum=3;
snr_db=15;
MSE_ML=zeros(1,length(snr_db));
MSE_MA=zeros(1,length(snr_db));
LR_ML=zeros(1,length(snr_db));
LR_MA=zeros(1,length(snr_db));
weight=1;
freq=0.04;
multi_path=0; 
    range=(CP+(CP/2)+1):(CP+(CP/2)+2*N+CP);%(CP+2):(CP+1+2*N+CP); %% 2N+CP
    Pos=N+(CP/2)+1;%N+CP;
    tim=round(clock)
    for snr=1:length(snr_db)
        for ttt=1:timer
            %%% TX %%%
            clear data_tx;
            clear out_ifft;
            clear ps_out;
            data_tx=sign(unidrnd(2,packetnum,N)-1.5);
            out_ifft(1,:)=ifft(data_tx(1,:));
            out_ifft(2,:)=ifft(data_tx(2,:));
            out_ifft(3,:)=ifft(data_tx(3,:));
            ps_out=[out_ifft(1,N-CP+1:N),out_ifft(1,:),out_ifft(2,N-CP+1:N),out_ifft(2,:),out_ifft(3,N-CP+1:N),out_ifft(3,:)];
            %%% Channel %%%
            clear tx_power;
            clear variance;
            clear timeoffset_start;
            clear timeoffset_end;
            clear rx1;
            txpower=sum(ps_out.*conj(ps_out))/length(ps_out);
            variance=sqrt(txpower/(2*10^(snr_db(snr)/10)));
              %%%   Frequency offset and initial phase and multipath   %%%
            if multi_path==1
                path_num=3;
                delay_max=CP;
                [rx1]=channel(ps_out,path_num,delay_max);
            else
                rx1=ps_out;
            end
            rx1=rx1+variance*(randn(1,length(rx1))+i*randn(1,length(rx1)));
            clear pha;
            clear freq_time;
            clear freq_offset;
            clear rx;
            pha=rand*2*pi;
            freq_time=1:length(rx1);
            freq_offset=freq*freq_time;
            rx=rx1.*exp(j*((2*pi*freq_offset)/N+pha));
            clear SymbolTiming;
            clear RL;
            clear Dis;
            [RL]=MA(N,CP,rx);
            [ggg,SymbolTiming]=max(RL(range));
            Dis=abs(Pos-SymbolTiming);
            MSE_MA(snr)=MSE_MA(snr)+Dis^2;
            if Dis~=0
                LR_MA(snr)=LR_MA(snr)+1;
            end      
        end
        tim=round(clock);
        snr_db(snr);
        MSE_MA(snr)=MSE_MA(snr)/timer;
        LR_MA(snr)=LR_MA(snr)/timer;         
    end
plot(snr_db,LR_MA(:),'or-')    
tim=round(clock)

⌨️ 快捷键说明

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