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

📄 ml.m

📁 一个在matlab环境下的DAB仿真程序源码。内含ofdm收发
💻 M
字号:
function [ml_time,ml_freq]=ML(multi_path,p,L,N)
% clear
% load QPSK_base_band_re.mat re_base_band_data;
% load QPSK_base_band_imag.mat im_base_band_data;

% data=re_base_band_data(2,:)+k*(im_base_band_data(2,:));




l=L;
data=multi_path;
data1=[data zeros(1,N)];
% data1=[data zeros(1,2048)];

sum_m(1,1)=0;                                                                 %共轭乘积求和
sum_e(1,1)=0;                                                                  %平方和  求和
m=round(length(data)/(N+L));
p=abs(p)/(abs(p)+1);
plot_sum=[];
abs_sum=[];
abs_sum1=[];
dec_sum(1,1)=0;
dec_sum_1(1,1)=0;

    for k=1:m;
    

            for i=1:(N+l);
   

                if i<=L;         
             
                    dec_sum(k,i)=abs(sum_m(k,i))^2-(p*0.5*sum_e(k,i)/k);
                     dec_sum_1(k,i)=abs(sum_m(k,i))-(p*0.5*sum_e(k,i)/k);
                    sum_m(k,i+1)=sum_m(k,i)+data1((k-1)*(N+L)+i)*conj(data1((k-1)*(N+L)+i+N));
%                     sum_e(k,i+1)=sum_e(k,i)+p/2*((abs(data1((k-1)*(N+L)+i)))^2+(abs(data1((k-1)*(N+L)+i+N)))^2);
                   sum_e(k,i+1)=sum_e(k,i)+p/2*((abs(data1((k-1)*(N+L)+i)))^2+(abs(data1((k-1)*(N+L)+i+N)))^2);
                    
%                      sum_e(k,i+1)=sum_e(k,i)+p/2*((abs(data1((k-1)*(N+L)+i)))^2);

%                   
                 
                else
                    dec_sum(k,i)=abs(sum_m(k,i))^2-(p*0.5*sum_e(k,i)/k);
                      dec_sum_1(k,i)=abs(sum_m(k,i))-(p*0.5*sum_e(k,i)/k);
                    sum_m(k,i+1)=sum_m(k,i)+data1((k-1)*(N+L)+i)*conj(data1((k-1)*(N+L)+i+N))-data1((k-1)*(N+L)+i-L)*conj(data1((k-1)*(N+L)+i+N-L));
                      
%                     sum(k,i+1)=sum(k,i)+data1((k-1)*(N+L)+i)*conj(data1((k-1)*(N+L)+i+N));
                    sum_e(k,i+1)=sum_e(k,i)+p/2*(abs(data1((k-1)*(N+L)+i))^2+abs(data1((k-1)*(N+L)+i+N))^2-abs(data1((k-1)*(N+L)+i-L))^2-abs(data1((k-1)*(N+L)+i+N-L))^2);
%                     sum_e(k,i+1)=sum_e(k,i)+p/2*(abs(data1((k-1)*(N+L)+i))^2+abs(data1((k-1)*(N+L)+i+N))^2);
                   % dec_sum(k,i+1)=abs(sum(k,i+1))-p*0.5*sum_e(k,i+1);
%                      dec_sum(k,i)=abs(sum(k,i))-p*0.5*sum_e(k,i);
                end ;
            end;
         
            
                    sum_m(k+1,1)=0;%sum_m(k,i);
                    sum_e(k+1,1)=sum_e(k,i);
%                     sum_e=0;
                
                    
%                     dec_sum(k,:)=abs(sum(k,:))-p*0.5*sum_e(k,:);
%                     dec_sum(k,1)=abs(sum(k,i+1))-p*0.5*sum_e(k,i+1);
                  
%                     dec_sum(k+1,1)=dec_sum(k,i+1);

   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
                
%          if k==1;
%              plot_sum=sum(1,:);
%             abs_sum=abs(sum(1,:))./(p*sum_e(1,:)+eps);
%         else
            plot_sum=[plot_sum sum_m(k,2:N+l+1)];
%              abs_sum=[abs_sum abs(sum(k,2:N+L))-p*0.5*sum_e(k,2:N+L)];
             abs_sum=[abs_sum dec_sum(k,:)];
             abs_sum1=[abs_sum1 dec_sum_1(k,:)];
             
            
%             abs_sum=[abs_sum abs(sum(k,:))./(p*sum_e(k,:)+eps)];
%         end;

end;


% 
%figure(1);
 freq=angle(plot_sum)/(-1*2)/pi;
 freq_out=freq;
% subplot(2,1,1);
% plot(abs_sum);
% subplot(2,1,2)
% plot(freq);
% % % 
% figure(2);
% subplot(2,1,1);
% plot(abs_sum1);
% subplot(2,1,2)
% plot(freq);



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%555
% for k=1:m;
%     ML_magnitude(k)=max(abs(sum(k,:)));
%   
% %     ML_timing(k)=find(max(abs(sum(k,:))));
% %     ML_freq(k)=angle(find(ML_magnitude(k)));
% end ;

%%%%%%%%%%%%%%%%%%%%%%%%%%find
%%%%%%%%%%%%%%%%%%%%%%%%%%ml_timing%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% th=0.4;
% time=0;
% td=128/64;
% ml_magnitude=abs(plot_sum);


for k=1:m;
    
%     max_magnitude(k)=max(abs(plot_sum([(k-1)*(N+L)+1:k*(N+L)])));
max_magnitude(k)=max(abs_sum([(k-1)*(N+l)+1:k*(N+l)]));
    for i=(k-1)*(N+l)+1:k*(N+l);
%         if abs(plot_sum(i))==max_magnitude(k);
            if abs_sum(i)==max_magnitude(k);


             ml_time(k)=i;
%              ml_freq(k)=mean(freq( 1,[2+:ml_time(k)]));
            ml_freq(k)=freq(ml_time(k)-1);
      
         end;
     end;
         
            
%     ml_time(k)=(find(abs(plot_sum([(k-1)*(N+L)+1:k*(N+L)]))==max_magnitude(k))-(k-1)+(N+L)*(k-1))+(k-1)%+(N+L+1)*(k-1);%+(k-1)*(N+L)-k-L;
    
%     ml_freq(k)=freq(ml_time(k)+k);
end;

% ml_freq=mean( ml_freq(1,:));





⌨️ 快捷键说明

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