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

📄 ml.m

📁 it is a simulation about ML synchronization algorithm in OFDM systems,you can slao see a function pi
💻 M
字号:
clear all;
clc;
N_symbol=10;
N = 1024; 
L=128;
rx_pre2 = zeros(1,N+L); 
rx_pre1 = zeros(1,N+L); 
rx = zeros(1,N+L); 
delay=10; 
errore=[];
for SNR=1:20
    ro = SNR/(SNR+1);
    cnt = 0;
    while cnt <= N_symbol+1
        input_stream = (sign(randn(1,N*2))+1)/2;
        qpsk_str = QPSK(input_stream); 
        xn=ifft(qpsk_str,N);
        len_xn = length(xn); 
        sn=[xn(len_xn-L+1:len_xn) xn];
        rx_pre2=rx_pre1;
        rx_pre1=rx;
        e=0.25;
        for k=1:length(sn)
            rx(k)=sn(k)*exp(j*2*pi*e*k/N); 
        end
        obs_rx=[rx_pre2(N+L-10+1:N+L) rx_pre1 rx(1:N-10)]; 
        obs_rx=obs_rx+add_noise(obs_rx,SNR);
        if cnt > 1
        i=cnt-1;
        gamma =zeros(1,N);
        pii =zeros(1,N);
        for theta=1:N
            for k=theta:theta+L-1
        gamma(theta)= gamma(theta)+obs_rx(k)*conj(obs_rx(k+N));
        pii(theta)=pii(theta)+0.5*( abs(obs_rx(k))^2 + abs(obs_rx(k+N))^2 );
            end
        lamda(i,theta)=abs(gamma(theta))- ro*pii(theta);
        gamma1(i,theta)=-angle(gamma(theta))/(2*pi);
        end 
        end 
        cnt= cnt+1; 
    end
    lamda_str=[];
    gamma1_str=[];
    temp=0;
    for i=1:N_symbol
        estimate_d(i)=find(lamda(i,:)==max(lamda(i,:)));
        pinpian(i)=gamma1(i,estimate_d(i));
        temp=temp+(pinpian(i)-e)^2;
        lamda_str=[ lamda_str lamda(i,:)];
        gamma1_str=[ gamma1_str gamma1(i,:)];
    end

    errore(SNR)=sqrt(temp/N_symbol);
end
clf;
grid on
figure(1);
subplot(2,1,1)
plot(lamda_str)
xlabel('时间');ylabel('最大似然函数的输出');
subplot(2,1,2)
plot(gamma1_str)
xlabel('时间');ylabel('频率偏移输出');
figure(2);
plot(errore)
axis([2 20 0.00002 0.003])

⌨️ 快捷键说明

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