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

📄 mlmethod.m

📁 基于循环前缀的符号定时同步和载波同步的ofdm仿真的matlab程序
💻 M
字号:
%%%%最大似然ML  最大似然方法联合实现符号定时同步和载波同步仿真
clear all;
%********************** preparation part ***************************
para=128;   % Number of parallel channel to transmit (points) %并行信道传输个数
fftlen=128; % FFT length %fft 长度
noc=1024;    % Number of carrier %载波的个数
nd=6;       % Number of information OFDM symbol for one loop%OFDM symbol 循环个数的说明?
ml=2;       % Modulation level : QPSK %调制方式:QPSK
sr=250000;  % Symbol rate  %符号的比特率
br=sr.*ml;  % Bit rate per carrier %每个载波的比特率?
gilen=128;   % Length of guard interval (points)%%保护间隔的长度
ebn0=3;     % Eb/N0  %Eb为单位比特的平均信号的能量;n0为噪声的单边功率普密度
SNR=15;     % ENR  %信噪比
T=10^(-6);   % Sampling time : 1us%%采样时间1us 抽样频率1024kHz
%************************** transmitter发射机 *********************************
%************************** Data generation 数据生成程序**************************** 
seldata=rand(1,para*nd*ml)>0.5;  %  rand : built in function  %产生1x(128*6*2)=1X1536的数据
M=length(seldata)/noc;
%****************** Serial to parallel conversion串并转换 ***********************
paradata=reshape(seldata,para,nd*ml); %  reshape : built in function
%************************** QPSK modulation %QPSK 调制***************************** 
[ich,qch]=qpskmod(paradata,para,nd,ml);
kmod=1/sqrt(2); %  sqrt : built in function
ich1=ich.*kmod;%实部的数据
qch1=qch.*kmod;%虚部的数据
%******************* IFFT ************************
x=ich1+qch1.*i;
y=ifft(x);      %  ifft : built in function
ich2=real(y);   %  real : built in function
qch2=imag(y);   %  imag : built in function
%********* cyclic perfix insertion 循环保护间隔**********
[ich3,qch3]= giins(ich2,qch2,fftlen,gilen,nd);
fftlen2=fftlen+gilen;

%***************** AWGN addition 叠加在 AWGN信道上********* 
ich4=AWGN(ich3,SNR);
qch4=AWGN(qch3,SNR);
rx=ich4+qch4.*i;%叠加噪声之后的数据
%****************** Calculate gamma(m) & PI(m) *******************
gamma =zeros(M,noc);
lamda =zeros(M,noc);
pii =zeros(M,noc);
ro = SNR/(SNR+1);
e=0.25;
for n=1:M
    for theta=1:noc
      
         sampling_rx(n,:)=[rx(n,1:theta) rx(n,:) rx(n,1:noc-theta)]; 
         %sampling_rx=[rx(n,1:theta) rx(n,:) rx(n,1:noc-theta)];   
         %sampling_rx(n,:)=[zeros(1,theta) rx(n,:) zeros(1,noc-theta)];
         
       for k=theta:theta+gilen-1
                %equation 2-(6),2-(7)                
                gamma(n,theta)= gamma(n,theta)+sampling_rx(n,k)*conj(sampling_rx(n,k+noc));
                pii(n,theta)=pii(n,theta)+abs(sampling_rx(n,k))^2 + abs(sampling_rx(k+noc))^2;
       end
        gamma(n,theta)
       pii(n,theta)=0.5*pii(n,theta);
        
        %equation 2-(5)
        lamda(n,theta)=abs(gamma(n,theta))*cos(2*pi*e+angle(gamma(n,theta))) - ro*pii(n,theta);
        
    end
end
t=T:T:noc*T;
figure(1);

plot(abs(gamma(1,:)))
figure(2);

plot(pii(1,:))
figure(3);

plot(lamda(1,:))
figure(4)

plot(real(sampling_rx(1,:)))
figure(5);
plot(t,lamda(1,:))

⌨️ 快捷键说明

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