Although Julia homepage shows using Julia over Matlab gains more in 
performance, my experience is quite opposite.
I was trying to simulate channel evolution using Jakes Model for wireless 
communication system.

Matlab code is:
function [ h, tf ] = Jakes_Flat( fd, Ts, Ns, t0, E0, phi_N )
%JAKES_FLAT 
%   Inputs:
%       fd, Ts, Ns  : Doppler frequency, sampling time, number of samples
%       t0, E0      : initial time, channel power
%       phi_N       : initial phase of the maximum Doppler frequeny
%       sinusoid
%
%   Outputs:
%       h, tf       : complex fading vector, current time

    if nargin < 6,  phi_N = 0;  end
    if nargin < 5,  E0 = 1;     end
    if nargin < 4,  t0 = 0;     end
    
    N0 = 8;         % As suggested by Jakes
    N  = 4*N0 + 2;  % an accurate approximation
    wd = 2*pi*fd;   % Maximum Doppler frequency[rad]
    t  = t0 + [0:Ns-1]*Ts;  % Time vector
    tf = t(end) + Ts;       % Final time
    coswt = [ sqrt(2)*cos(wd*t); 2*cos(wd*cos(2*pi/N*[1:N0]')*t) ];
    h  = E0/sqrt(2*N0+1)*exp(j*[phi_N pi/(N0+1)*[1:N0]])*coswt;
end
Enter code here...

My call results in :
>> tic; Jakes_Flat( 926, 1E-6, 50000, 0, 1, 0 ); toc
Elapsed time is 0.008357 seconds.


My corresponding Julia code is
function Jakes_Flat( fd, Ts, Ns, t0 = 0, E0 = 1, phi_N = 0 )
# Inputs:
#
# Outputs:
  N0  = 8;                  # As suggested by Jakes
  N   = 4*N0+2;             # An accurate approximation
  wd  = 2*pi*fd;            # Maximum Doppler frequency
  t   = t0 + [0:Ns-1]*Ts;
  tf  = t[end] + Ts;
  coswt = [ sqrt(2)*cos(wd*t'); 2*cos(wd*cos(2*pi/N*[1:N0])*t') ]
  h = E0/sqrt(2*N0+1)*exp(im*[ phi_N pi/(N0+1)*[1:N0]']) * coswt
  return h, tf;
end
# Saved this as "jakes_model.jl"


My first call results in 
julia> include( "jakes_model.jl" )
Jakes_Flat (generic function with 4 methods)

julia> @time Jakes_Flat( 926, 1e-6, 50000, 0, 1, 0 )
elapsed time: 0.65922234 seconds (61018916 bytes allocated)

julia> @time Jakes_Flat( 926, 1e-6, 50000, 0, 1, 0 )
elapsed time: 0.042468906 seconds (17204712 bytes allocated, 63.06% gc time)

For first execution, Julia is taking huge amount of time. On second call, 
even though Julia take considerably less(0.042468906 sec) than first(
0.65922234 sec), it's still much higher to Matlab(0.008357 sec).
I'm using Matlab R2014b and Julia v0.3.10 on Mac OSX10.10.

- vish

Reply via email to