+ Post New Thread
Results 1 to 16 of 16
  1. #1
    Junior Member level 1
    Points: 1,493, Level: 8

    Join Date
    Feb 2005
    Posts
    19
    Helped
    0 / 0
    Points
    1,493
    Level
    8

    rayleigh fading matlab

    Anyone here know how to generate rayleigh distribution(rayleigh fading) in Matlab?For Gaussian, it is very simple as randn(x).How about for very basic Rayleigh?I mean without cosider doppler frequency and etc.

    •   Alt22nd May 2006, 22:38

      advertising

        
       

  2. #2
    Member level 1
    Points: 1,297, Level: 8

    Join Date
    May 2006
    Posts
    33
    Helped
    4 / 4
    Points
    1,297
    Level
    8

    rayleigh distribution matlab

    If you do not care about doppler.That is if you do not do channel estimation, and other effects.

    Rayleigh can be generated by

    R=randn(N,1)+sqrt(-1)*randn(N,1);
    and the envelope is distruibuted according to rayleigh as

    r=abs(R)



  3. #3
    Member level 4
    Points: 2,506, Level: 11

    Join Date
    Jan 2003
    Posts
    76
    Helped
    1 / 1
    Points
    2,506
    Level
    11

    rayleigh matlab

    Code:
    % Program to simulate Rayleigh fading using a p-th order autoregressive model AR(p) according to 
    % Baddour's work: "Autoregressive modeling for fading channel simulation", IEEE Transaction on Wireless Communications, July 2005.
    
    function [chann]=Rayleigh_fading(P,M,fm,fs,epselonn)
        % P: AR model order
        % M: number of samples
        % fd: maximum doppler frequency in Hz
        % fs: Symbol frequency in ksps
        % epselonn: added bias, depends on the Doppler rate, see the paper "Autoregressive modeling for fading channel simulation". 
       
        % usage: Rayleigh_fading(100,10000,150,3,0.00000001)
        
       
        %-------------------------------------------------------------------------------------------------------------------------   
         
            for p=1:P+1
              vector_corr(p)=besselj(0,2*pi*fm*(p-1)/(fs*1000)); % Bessel autocorrelation function according to Jakes' model
            end
            
            auto_correaltion_matrix=toeplitz(vector_corr(1:P))+eye(P)*epselonn; % adding a small bias, epselonn, to the autocorrelation matrix to overcome the ill conditioning of Yule-Walker equations
            AR_parameters=-inv(auto_correaltion_matrix)*vector_corr(2:P+1)'; % Solving the Yule-Walker equations to obtain the model parameters
            segma_u=auto_correaltion_matrix(1,1)+vector_corr(2:P+1)*AR_parameters;
            
            KKK=2000;
       
            h=filter(1,[1 AR_parameters.'],wgn(M+KKK,1,10*log10(segma_u),'complex')); % Use the function Filter to generate the channel coefficients
            chann=h(KKK+1:end,:);  % Ignore the first KKK samples
             
        %-------------------------------------------------------------------------------------------------------------------------
    From h**p://www.mathworks.com/matlabcentral/
    :D
    "Info will make us free.."



  4. #4
    Junior Member level 1
    Points: 1,514, Level: 8

    Join Date
    Jun 2006
    Posts
    16
    Helped
    5 / 5
    Points
    1,514
    Level
    8

    rayleigh channel matlab

    SEE THIS



  5. #5
    Newbie level 4
    Points: 1,168, Level: 7

    Join Date
    Jul 2006
    Posts
    5
    Helped
    0 / 0
    Points
    1,168
    Level
    7

    rayleigh fading channel matlab

    Quote Originally Posted by malaylah
    Anyone here know how to generate rayleigh distribution(rayleigh fading) in Matlab?For Gaussian, it is very simple as randn(x).How about for very basic Rayleigh?I mean without cosider doppler frequency and etc.
    you can use this instruction"raylpdf" or "pdf('rayleigh',)"



  6. #6
    Banned
    Points: 1,669, Level: 9

    Join Date
    Aug 2005
    Location
    Ukraine
    Posts
    71
    Helped
    4 / 4
    Points
    1,669
    Level
    9

    matlab rayleigh

    Quote Originally Posted by janath
    If you do not care about doppler.That is if you do not do channel estimation, and other effects.

    Rayleigh can be generated by

    R=randn(N,1)+sqrt(-1)*randn(N,1);
    and the envelope is distruibuted according to rayleigh as

    r=abs(R)
    How is then the phase of the fading generated and
    how to take into account when modelling the flat slow fading
    the speed of fading, the delay. Please could anyone post the matlab code
    taking into account my questions?



  7. #7
    Newbie level 2
    Points: 1,156, Level: 7

    Join Date
    Aug 2006
    Posts
    2
    Helped
    0 / 0
    Points
    1,156
    Level
    7

    jakes model matlab

    Quote Originally Posted by lincolndsp
    Quote Originally Posted by janath
    If you do not care about doppler.That is if you do not do channel estimation, and other effects.

    Rayleigh can be generated by

    R=randn(N,1)+sqrt(-1)*randn(N,1);
    and the envelope is distruibuted according to rayleigh as

    r=abs(R)
    How is then the phase of the fading generated and
    how to take into account when modelling the flat slow fading
    the speed of fading, the delay. Please could anyone post the matlab code
    taking into account my questions?
    System.out has posted the code for generating a rayleigh fading process related doppler frequency. You need to deside the value of fm,fs,etc. To determine whether the fading is slow or fast varying, you need to set the ratio of fm to fs.



    •   Alt23rd August 2006, 15:46

      advertising

        
       

  8. #8
    Banned
    Points: 1,669, Level: 9

    Join Date
    Aug 2005
    Location
    Ukraine
    Posts
    71
    Helped
    4 / 4
    Points
    1,669
    Level
    9

    matlab rayleigh distribution

    what is the range of ratios of fm and fs for
    slow flat fading

    and how to apply channel coefficients obtained using
    the code provided by System.out to get the resulting
    fading signal. I mean I have the input signal s and
    channel coefficients, how do i get the resulting fading
    signal, say, r



  9. #9
    Newbie level 3
    Points: 1,616, Level: 9

    Join Date
    Aug 2006
    Posts
    3
    Helped
    0 / 0
    Points
    1,616
    Level
    9

    rayleigh fading channel matlab code

    another article about raleigh fading



  10. #10
    Newbie level 5
    Points: 1,094, Level: 7

    Join Date
    Feb 2007
    Posts
    8
    Helped
    0 / 0
    Points
    1,094
    Level
    7

    fading channel matlab

    i want to know about simple fast rayleigh fading channel program in matlab..is anyone knows about it? i just want to make it as my reference, so that i can learn fast rayleigh fading channel from that program...

    thak you



  11. #11
    Newbie level 4
    Points: 1,061, Level: 7

    Join Date
    Feb 2007
    Posts
    5
    Helped
    0 / 0
    Points
    1,061
    Level
    7

    matlab rayleigh fading

    this is how i used it in my UG project when dealing with a case of flat fading .



    %function flatfading

    clear;



    N =100; %Enter the number of random scaterers

    M =1000 %Enter the no of realizations



    A = 1 %Enter the value of A

    fc =1000; %carrier frequency

    Fs=4000; %sampling frequency greater than Nyquist rate

    w = 2 * pi * fc ;



    t = [0:(1/Fs):(M-1)*(1/Fs)];

    L=length(t);



    theta = (rand(N,1) * 2 * pi) - pi;

    Ak = (rand(N,1) * 2) - 1;



    X = zeros(1,L) ;

    for m = 1:N

    X=X+Ak(m)*cos(w.*t+theta(m));

    end

    % Analyzing that X(t) is a narrow-band spectral process

    Y = fft(X) ;

    Y = fftshift(Y) ;



    plot(abs(Y)) ;

    title( 'Magnitude of fft of a single realisation of X(t)') ;

    xlabel( 'Frequency' ) ;

    ylabel( 'Magnitude' ) ;

    pause

    %Calculating XI and XQ

    Ak = (rand(N,M) * 2 ) - 1;

    theta = (rand(N,M) * 2 * pi) - pi;





    XI = zeros(1,M ) ;

    XQ = zeros(1,M ) ;

    for i=1:N



    XI = XI+(Ak(i,:).*cos(theta(i,:)));

    XQ = XQ+(Ak(i,:).*sin(theta(i,:)));

    end

    %Calculating the central moments and beta values for in and quadrature phase



    U2_inphase = moment(XI,2);

    U3_inphase = moment(XI,3);

    U4_inphase = moment(XI,4);



    B1_inphase = (U3_inphase)^2/(U2_inphase)^3

    B2_inphase = (U4_inphase)/(U2_inphase)^2



    U2_quad = moment (XQ,2);

    U3_quad = moment (XQ,3);

    U4_quad = moment (XQ,4);



    B1_quad = (U3_quad)^2/(U2_quad)^3

    B2_quad = (U4_quad)/(U2_quad)^2



    %Calculating the envelope r from the M realisations of XI and XQ



    r = sqrt(XI .^ 2 + XQ .^ 2);

    phi = atan(XQ ./ XI);



    R=hist(r,100);

    index = 1:100 ;



    R_index = (index/length(index)*ceil( max(r)));

    stem(R_index,R)

    title( 'Histogram of distribution of the Envelope R' ) ;

    xlabel('R') ;

    ylabel('Frequency of R' ) ;

    pause





    % including line of sight component

    for a = 0:5



    XL = a*cos(2*pi*fc*t);



    XI_2 = XI + XL;



    r = sqrt(XI_2 .^ 2 + XQ .^ 2);



    R = hist(r,100);

    index = 1:100 ;



    R_index = (index/length(index)*ceil( max(r)));



    subplot( 2, 3,(a +1));

    plot(R_index,R)



    end



    •   Alt5th February 2007, 00:24

      advertising

        
       

  12. #12
    Full Member level 2
    Points: 2,663, Level: 12

    Join Date
    Nov 2003
    Posts
    135
    Helped
    7 / 7
    Points
    2,663
    Level
    12

    rayleigh channel matlab code

    this is the way i used rayleigh flat fading.....
    divide the data in small frames and then convolve it with the h, where h = (randn(1) + j*randn(1))/sqrt(2);
    the value of h will be diff for each frame.
    It a flat fadding in the sence that the value of channel remains constant over the time(here frame)

    correct me if i am wrong.



  13. #13
    Full Member level 3
    Points: 2,890, Level: 12

    Join Date
    Jun 2001
    Posts
    184
    Helped
    7 / 7
    Points
    2,890
    Level
    12

    rayleigh fading in matlab

    To generate a Rayleigh fading channel model, you first generate real and image part of the independent Gaussian process, then you need design a filter to have the spretrum similar to Jakes model, i.e, to have the Bessel function as the auto-correlation. Passing through the I, Q Gaussian process to this filter, you oculd get the Rayleigh fadung model.



  14. #14
    Newbie level 3
    Points: 919, Level: 6

    Join Date
    Dec 2007
    Posts
    4
    Helped
    0 / 0
    Points
    919
    Level
    6

    rayleigh channel in matlab

    The cdf of rayleigh distribution is

    F(r) = 1 - exp(-r^2/2sigma^2)

    r = sqrt(-2sigma^2 * ln(1-F(r))

    In the matlab code, i set 2sigma^2 = 1 so

    r = sqrt(-log(rand(1,N)));

    receive_signal = transmit_signal.*r + awgn;

    Not sure whether it is correct?



  15. #15
    Newbie level 3
    Points: 516, Level: 4

    Join Date
    Feb 2010
    Location
    USA
    Posts
    3
    Helped
    0 / 0
    Points
    516
    Level
    4

    Re: rayleigh channel in matlab

    can anyone explain how to send an input signal through the calculated channel coefficients as described by MATLAB Central - File detail - Rayleigh Fading Channel Simulation
    this code gives the channel coefficients, how to use these to send a signal of my interest. Thank you.



  16. #16
    Newbie level 1
    Points: 340, Level: 3

    Join Date
    Jan 2011
    Posts
    1
    Helped
    0 / 0
    Points
    340
    Level
    3

    Re: rayleigh channel in matlab

    Quote Originally Posted by TANB0025 View Post
    The cdf of rayleigh distribution is

    F(r) = 1 - exp(-r^2/2sigma^2)

    r = sqrt(-2sigma^2 * ln(1-F(r))

    In the matlab code, i set 2sigma^2 = 1 so

    r = sqrt(-log(rand(1,N)));

    receive_signal = transmit_signal.*r + awgn;

    Not sure whether it is correct?



    Hi,
    I tried to implement Rayleigh channel with the same Principe, but the system give me this error:

    ??? Error using ==> mtimes
    Inner matrix dimensions must agree.

    Error in ==> canal16 at 13
    demodulator_output=Rl*modulator_output+sigma*(rand n(1,T)+j*randn(1,T));
    Error in ==> test5 at 125
    demodulator_output=canal16(demodulator_output);
    --------------------------------------------
    this is the block programmed

    function demodulator_output=canal16(modulator_output);

    global sigma T

    comp1=(1/sqrt(2))*randn(1,T);
    comp2=(1/sqrt(2))*randn(1,T);

    % variable aleatoire rayleigh

    %RL=sqrt(square(comp1)+square(comp2));
    Rl=sqrt((comp1.^2+comp2.^2));

    demodulator_output=Rl*modulator_output+sigma*(rand n(1,T)+j*randn(1,T));

    can you please tell me how to define the inner matrix dimension?



--[[ ]]--