%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Este script gera um vetor de amostras aleatórias de uma variável
% aleatória complexa com componentes reais e imaginária independentes.
% É mostrado graficamente tanto o histograma bidimensional como a 
% densidade de probabilidade conjunta destas duas variáveis, a fim de
% mostrar sua simetria circular.
% É calculado o módulo destes números e seu histograma, a fim de mostrar a
% distribuição de Rayleigh resultante.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% André Noll Barreto, Universidade de Brasília, 2013
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Parâmetros
N = 10000; % número de amostras aleatórias 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% calcular a pdf conjunta das partes real e imaginária da v.a. complexa
interval = .1;
x = -5:interval:5;
y = -5:interval:5;
px = normpdf(x);
py = normpdf(y);
pxy = px'*py;


hist2d = zeros(length(x)+1,length(y)+1);

x_rand = randn(1,N);
y_rand = randn(1,N);

r = sqrt(x_rand.^2 + y_rand.^2);

for k = 1: N
     
    ind_x = find(x_rand(k) <= x,1)+1;
    if isempty(ind_x)
        ind_x = 1;
    end
    
    ind_y = find(y_rand(k) <= y,1)+1;
    if isempty(ind_y)
        ind_y = 1;
    end

    hist2d(ind_x, ind_y) = hist2d(ind_x, ind_y) + 1;
end


figure(1)

subplot(1,2,1)
mesh(x,y,pxy);
xlabel('x');
ylabel('y');
zlabel('p_{x,y}(\it{x,y})')
title('PDF de uma v.a. Gaussiana circularmente simétrica')

subplot(1,2,2)
x_ = [x(1)-interval/2,x+interval/2];
y_ = [y(1)-interval/2,y+interval/2];
mesh(x_,y_, hist2d)
xlabel('x')
ylabel('y')
title('Histograma de x e y')



figure(2)

subplot(1,2,1)
xr = -1:interval:5;
pr = raylpdf(xr);
plot(xr,pr);
xlabel('r')
ylabel('p_r(\it{r})')
title('PDF de Rayleigh')
subplot(1,2,2)
hist(r,xr)
xlabel('r')
title('Histograma de r')
