PageRenderTime 34ms CodeModel.GetById 18ms app.highlight 12ms RepoModel.GetById 1ms app.codeStats 0ms

/verify_vsf_lookup_table.m

http://github.com/gallamine/Photonator
Objective C | 40 lines | 27 code | 13 blank | 0 comment | 4 complexity | 9f8d4aeebe7ff485164ed9b2502f5b6b MD5 | raw file
 1% Test the method for calculating scattering lengths and choosing values
 2% from the VSF (volume scattering function) distribution
 3
 4num_photons = 1e6;
 5inv_b = 1;
 6
 7[cdf_scatter,angle] = generate_scatter('measured','petzold_avg');
 8
 9rand_array = rand(num_photons,3);    % generate a matrix for each photon with rand propogation, roll, and pitch
10rand_array(:,3) = rand_array(:,3).*2.*pi;   %% Uniformly distributed over 0 -2Pi                                                                             
11
12
13
14
15r = zeros(1,num_photons);
16theta = zeros(1,num_photons);
17
18% iterate over every single photon to calculate new position and
19% whether it was received or not.
20for i = 1:num_photons
21        
22    r(i) = -inv_b*log(rand_array(i,1));     % randomly generate optical path length      
23
24    %Generate scattering angle from beam spread function
25    k = 1;
26    while rand_array(i,2) > cdf_scatter(k)
27        k = k+1;
28    end
29    theta(i) = angle(k);
30        
31end
32
33hold on;
34
35figure(3);[N,X] = hist(r,100);
36plot(X,N./N(1));
37figure(4);[N,X] = hist(theta,500);
38plot(X,N./N(1));
39figure(5);[N,X] = hist(rand_array(:,3),360);
40plot(X,N./N(1));