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

📄 ofdm_64qam_ryu.m

📁 ofdm_64QAM_simulation,只是进行的初步的实验,大家仅仅供参考,共同研究进步吧!
💻 M
字号:
% 64QAM/OFDM system

% The number of subcarrier is 16
clear all
% THe IFFT input SubCarrier is 15+Zero(17) = 32
% USEFUL DATA : 51.840Mbps(STM-0)
% CODING : 26/27
% Coded data : (51.840*27/26) 53.83385Mbps
% 64QAM mapping Data : (53.83385/6) = 8.972308Msps

% subcarrier spacing is (8.972308/16) = 0.5982MHz

% OFDM signal BW (=Subcarr_spacing * 16), (=8.972308MHz) 3dB point
% OFDM signal 99% PWR BW : 9.5330772MHz((=Subcarr_spacing * 17/16)
% Nyquist frequency is 2*8.972308 >= 17.944616MHz
% Hence the sampling interval (ts) = 1/(17.944616MHz) = 55.727. . . ns

%%%%%%%%%% Initialization %%%%%%%%%%%%%%%%%%%%%
Number=100;
Num_car = 32;
Zero_Num = 0;
SubCarrier = Num_car + Zero_Num;
d_rate = 51.84*10^6;             % required information bit rate
c_rate = 26/27;				   % code rate
coded_rate = d_rate/c_rate;  % coded symbol rate
SymbolRate = coded_rate/(log2(64));   % 64QAM symbol rate
SubCarrierSpacing = SymbolRate/Num_car;    % subcarrier spacing
OF_Carrierdur = 1/SubCarrierSpacing;
OF_Symdur = OF_Carrierdur*SubCarrier;
iff_N = 32; % This must be carefully selected to prevent spectral aliasing
ts = 1/(OF_Carrierdur); 
fs = 1/ts;		% this must be larger than the OFDM BW*2
df = 2*10^3; % required frequency resolution
delta=0.005;   % equalizer step size
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
bPath_Num = 2;%input ('Enter is Path of Number(1~2): ');

%64 QAM Generator
QAM_Data = QAM_Generator(Num_car*Number);
disp('End of QAM_Generator'); 

%IFFT
IFFTData= Radix2IFFT(QAM_Data,SubCarrier);
%Plot_frequence(IFFTData);%2 graph
disp('End of Radix2IFFT');

%Insert Zero
for st=1:SubCarrier*Number,
   IFFTDataWithZero(st*2-1)=IFFTData(st);
   IFFTDataWithZero(st*2)=0;
end;

%Filter
for loop=0:31,
   
alpha=input ('Enter is fading Depth (0~1) : ');%0.9;
FadingDelay=16*10^-9;
SampleDelay=input ('Enter is SampleDelay : ');
SampleDelay=10^-9*SampleDelay;
delay=SampleDelay;
FilteredData=Dig_Filter(IFFTDataWithZero,delay);
delay=FadingDelay+SampleDelay;
DelayedData=DelayFilter(IFFTDataWithZero,delay);
disp('End of Dig_Filter');
delay=FadingDelay+SampleDelay;
MultiPathData=FilteredData-alpha*DelayedData;
%Spectrum Display
%Spec_Display(FilteredData);
%Spec_Display(DelayedData);
Spec_Display(MultiPathData);

for j=0:Number-1,
   OFDM_Dat= IFFTData(SubCarrier*j+1:SubCarrier*(j+1));
   pt(SubCarrier*j+1:SubCarrier*(j+1))=fft(OFDM_Dat);
end;
%Constel(QAM_Data,SubCarrier);

for j=0:Number-1,
   for k=0:SubCarrier-1,
      SamplingPoint=j*SubCarrier+k;
      pop(k+1)=FilteredData(16+SamplingPoint*2);
   end;
   FFTData(j*SubCarrier+1:(j+1)*SubCarrier)=fft(pop);
   
   % Equalizer Part
   d=1;
   mapping=[ -28*d + i*28*d;
   -21*d + i*28*d;
   -14*d + i*28*d;
   -7*d + i*28*d;
   7*d + i*28*d;
   14*d + i*28*d;
   21*d + i*28*d;
   28*d + i*28*d;
   -28*d + i* 21*d
   -21*d + i*21*d;
   -14*d + i*21*d;
   -7*d + i*21*d;
   7*d + i*21*d;
   14*d + i*21*d;
   21*d + i*21*d;
   28*d + i*21*d;
   -28*d + i* 14*d
   -21*d + i*14*d;
   -14*d + i*14*d;
   -7*d + i*14*d;
   7*d + i*14*d;
   14*d + i*14*d;
   21*d + i*14*d;
   28*d + i*14*d;
-28*d + i* 7*d
   -21*d + i*7*d;
   -14*d + i*7*d;
   -7*d + i*7*d;
   7*d + i*7*d;
   14*d + i*7*d;
   21*d + i*7*d;
   28*d + i*7*d;
-28*d - i* 7*d
   -21*d - i*7*d;
   -14*d - i*7*d;
   -7*d - i*7*d;
   7*d - i*7*d;
   14*d - i*7*d;
   21*d - i*7*d;
   28*d - i*7*d;
-28*d - i* 14*d
   -21*d - i*14*d;
   -14*d - i*14*d;
   -7*d - i*14*d;
   7*d - i*14*d;
   14*d - i*14*d;
   21*d - i*14*d;
   28*d - i*14*d;
   -28*d - i* 21*d
   -21*d - i*21*d;
   -14*d - i*21*d;
   -7*d - i*21*d;
   7*d - i*21*d;
   14*d - i*21*d;
   21*d - i*21*d;
   28*d - i*21*d;
   -28*d - i* 28*d
   -21*d - i*28*d;
   -14*d - i*28*d;
   -7*d - i*28*d;
   7*d - i*28*d;
   14*d - i*28*d;
   21*d - i*28*d;
   28*d - i*28*d;];
   for sub=1:SubCarrier,
      if j==0,
         estimated_c(sub)=1;                                     
      end
      %k=sub;
      y_k=FFTData(j*SubCarrier+sub);
      z_k(sub)=estimated_c(sub)*y_k;                      % equalizer out put
      for b=1:64,
         metrics(sub,b)=(real(z_k(sub))-real(mapping(b,1)) ).^2 + (imag(z_k(sub))-imag(mapping(b,1))).^2;
      end;
      % khryu=[];
      [min_metrics decs]=min(metrics(sub,:));
      khryu=mapping(decs);
      e_k(sub)=khryu-z_k(sub);
      estimated_c(sub)=estimated_c(sub)+delta*e_k(sub)*conj(y_k);   % coefficients update
      mse(sub)=e_k(sub)^2;
   end
   kh_k(j*SubCarrier+1:(j+1)*SubCarrier)=z_k;
   %lms=[lms mse(dis)];

end;
% Constel(kh_k,SubCarrier);

for j=0:Number-1,
   for k=0:SubCarrier-1,
      SamplingPoint=j*SubCarrier+k;
      pop(k+1)=MultiPathData(16+SamplingPoint*2);
   end;
   FFTData(j*SubCarrier+1:(j+1)*SubCarrier)=fft(pop);
   
   % Equalizer Part
   d=1;
   mapping=[ -28*d + i*28*d;
   -21*d + i*28*d;
   -14*d + i*28*d;
   -7*d + i*28*d;
   7*d + i*28*d;
   14*d + i*28*d;
   21*d + i*28*d;
   28*d + i*28*d;
   -28*d + i* 21*d
   -21*d + i*21*d;
   -14*d + i*21*d;
   -7*d + i*21*d;
   7*d + i*21*d;
   14*d + i*21*d;
   21*d + i*21*d;
   28*d + i*21*d;
   -28*d + i* 14*d
   -21*d + i*14*d;
   -14*d + i*14*d;
   -7*d + i*14*d;
   7*d + i*14*d;
   14*d + i*14*d;
   21*d + i*14*d;
   28*d + i*14*d;
-28*d + i* 7*d
   -21*d + i*7*d;
   -14*d + i*7*d;
   -7*d + i*7*d;
   7*d + i*7*d;
   14*d + i*7*d;
   21*d + i*7*d;
   28*d + i*7*d;
-28*d - i* 7*d
   -21*d - i*7*d;
   -14*d - i*7*d;
   -7*d - i*7*d;
   7*d - i*7*d;
   14*d - i*7*d;
   21*d - i*7*d;
   28*d - i*7*d;
-28*d - i* 14*d
   -21*d - i*14*d;
   -14*d - i*14*d;
   -7*d - i*14*d;
   7*d - i*14*d;
   14*d - i*14*d;
   21*d - i*14*d;
   28*d - i*14*d;
   -28*d - i* 21*d
   -21*d - i*21*d;
   -14*d - i*21*d;
   -7*d - i*21*d;
   7*d - i*21*d;
   14*d - i*21*d;
   21*d - i*21*d;
   28*d - i*21*d;
   -28*d - i* 28*d
   -21*d - i*28*d;
   -14*d - i*28*d;
   -7*d - i*28*d;
   7*d - i*28*d;
   14*d - i*28*d;
   21*d - i*28*d;
   28*d - i*28*d;];
   for sub=1:SubCarrier,
      if j==0,
         estimated_c(sub)=1;                              
      end
      %k=sub;
      y_k=FFTData(j*SubCarrier+sub);
      z_k(sub)=estimated_c(sub)*y_k;                      % equalizer out put
      for b=1:64,
         metrics(sub,b)=(real(z_k(sub))-real(mapping(b,1)) ).^2 + (imag(z_k(sub))-imag(mapping(b,1))).^2;
      end;
      % khryu=[];
      [min_metrics decs]=min(metrics(sub,:));
      khryu=mapping(decs);
      e_k(sub)=khryu-z_k(sub);
      estimated_c(sub)=estimated_c(sub)+delta*e_k(sub)*conj(y_k);   % coefficients update
      mse(sub)=e_k(sub)^2;
   end
   kh_k(j*SubCarrier+1:(j+1)*SubCarrier)=z_k;
   %lms=[lms mse(dis)];
     
end;
% Constel(FFTData,SubCarrier);            % original constellation
Constel(kh_k,SubCarrier);                      % equalized signal constellation

pause;
for j=0:Number-1,
   for sub=1:SubCarrier,
      %k=sub;
      y_k=FFTData(j*SubCarrier+sub);
      z_k(sub)=estimated_c(sub)*y_k;                      % equalizer out put
   end
   kh_k(j*SubCarrier+1:(j+1)*SubCarrier)=z_k;
end;

% Constel(FFTData,SubCarrier);            % original constellation
Constel(kh_k,SubCarrier);                      % equalized signal constellation

end;

⌨️ 快捷键说明

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