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

📄 rayleigh_fading.m

📁 MATLAB无线网络的各种例子,相当全面
💻 M
字号:
%***************************** HIMANSHU RAY ************************************************************************%
% Calculating average fade duration and plotting envelope of Rayleigh distribution for specified value of fm and ro %
%************************** ****************************************************************************************%
close all
clear all
clc

N=256;    %Number of frequency samples
M=8192;   %Number of time samples 

% Required parameters for INPUT: fm and row (r0)

fm=input('ENTER THE VALUE OF fm [20 Hz, 200Hz]:')
r0=input('ENTER THE VALUE OF r0 [1,0.1,0.01]:')

y=1;
Afd_p=0;                   % Average fade duration; practical value
Nr_p=0;                    % Number of Zero-crossing level per second
Rrms_p=0;                  % Practically calculated R-rms value

while(y<=1)
    
    delta_f=2*fm/N;        % Frequency resolution
    delta_t=N/(M-1)/2/fm;  % Time resolution

%*************************   NOTE   **********************************%
% "If N=M-1, then the time resolution delta_t=1/2*fm, which may not be
% small so take M >> N. When M > N, we need to pad with zero values
% before taking IFFT."


X1(1)=randn(1);            % Generating Gaussain Random with N(0,1)
X1=X1(1);
Y1(1)=randn(1);
Y1=Y1(1);  

for m=2:(N/2)+1
    X1(m)=randn(1);
    X2(m)=randn(1);
    Y1(m)=randn(1);
    Y2(m)=randn(1);
    X(m)=X1(m)+i*X2(m);
    Y(m)=Y1(m)+i*Y2(m);
end

for m=1:(N/2)+1
    X(M-m+1)=conj(X(m+1));
    Y(M-m+1)=conj(Y(m+1));
end

% Sample Se(f) Spectrum

for jj=1:N/2               
SeF(jj)=1.5/(pi*fm*(sqrt(1-((jj-1)*delta_f/fm)^2))); 
end

% Calculating Edge Value by extending the slope prior to passband edge to edge

SeF((N/2)+1)=SeF(N/2)+SeF(N/2)-SeF((N/2)-1); 

for m=1:N/2
SeF(M-m+1)=SeF(m+1);
end

for m=1:M
    X_shaped(m)=X(m)*sqrt(SeF(m));
    Y_shaped(m)=Y(m)*sqrt(SeF(m));
end

X_component=real(ifft(X_shaped));   % Only considering the real part
Y_component=real(ifft(Y_shaped));

%************* Find R-rms value and envelope of Rayleigh Distribution ***********%

R=sqrt(X_component.^2+Y_component.^2);
r=20*log10(R);

rms=sqrt(mean(R.^2));
Rrms=20*log10(rms);
level=20*log10(r0*rms);
R=r-Rrms;

figure
plot(1:8192,R,'r')
xlabel ('Time Samples, M=8192');
ylabel ('Instantaneous Power dB');
title ('Figure(1):Rayleigh fading signal for Specified fm & r0 ');

%  Calculating (Practically) Number of Zero Level Crossing and Average Fade Duration  %

h=1;
c=0;
C1=0;
NUM=0;
  while h<=M
  if r(h)<=level
      i=h;
      while i<=M
          if r(i)>=level
              NUM=NUM+1;
              break;
          end
          i=i+1;
      end
      c=i-h;
      C1=C1+c;
      h=i-1;
  end
  h=h+1;
end    

Afd_p=Afd_p+(C1/NUM)*delta_t;
Nr_p=Nr_p+NUM*delta_f;
Rrms_p=Rrms_p+Rrms;
y=y+1;
end

%************ Theoretical calculation of  Number of Zero Level Crossing (Nr) and Average Fade Duration ************* %

Nr_theoretical=sqrt(2*pi)*fm*r0*exp(-r0^2); 

z1=exp(r0^2)-1;
z2=r0*fm*sqrt(2*pi);  
Average_fade_duration_theoretical =z1/z2;

rowdb=10*log10(r0) ;
Rrms_theoretical=Rrms+rowdb;

%*********************** Displayiing Calculated values  ************************ %

Nr_practical=(Nr_p);
Nr_practical
Nr_theoretical
Average_fade_duration_Practical=(Afd_p);
Average_fade_duration_Practical
Average_fade_duration_theoretical =z1/z2
Rrms_Practical=Rrms_p
Rrms_theoretical

⌨️ 快捷键说明

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