diff options
-rw-r--r-- | abcd.m | 51 | ||||
-rw-r--r-- | abcd_free_space.m | 6 | ||||
-rw-r--r-- | abcd_lens.m | 6 | ||||
-rw-r--r-- | arrange_optics_along_x.m | 19 | ||||
-rw-r--r-- | q2wr.m | 7 | ||||
-rw-r--r-- | q_after_abcd.m | 6 | ||||
-rw-r--r-- | solution_visualization.m | 1 | ||||
-rw-r--r-- | wr2q.m | 5 |
8 files changed, 50 insertions, 51 deletions
@@ -1,51 +0,0 @@ -function fs_abcd = abcd_free_space( distance) - fs_abcd=[1, distance; 0,1]; -endfunction - -function lens_abcd =abcd_lens(focal_distance) - lens_abcd = [1, 0; -1/focal_distance, 1]; -endfunction - -function qnew=q_after_abcd(q_old,abcd) - qnew=(q_old*abcd(1,1)+abcd(1,2))/(q_old*abcd(2,1)+abcd(2,2)); -endfunction - - -function optics = arrange_optics_along_x(optics_unsorted) -% arrange optics in proper order so its x position increases with consequent index - N=length(optics_unsorted); - - % assign x positions - x=zeros(1,N); - for i=1:N - x(i)=optics_unsorted{i}.x; - end - - [xs,indx]=sort(x); - cntr=1; - for i=indx - optics{cntr}=optics_unsorted{i}; - cntr=cntr+1; - end -end - - - - -function [waste,radius] =q2wr(q, lambda) -% convert Gaussian beam q parameter to waste and radius - waste=sqrt (-lambda./pi./imag(1./q)); - radius=(1./real(1./q)); -endfunction - - -function q=wr2q(waste,R,lambda) -% convert Gaussian beam waste and radius to q parameter - q=1./(1./R-1i.*lambda./pi./(waste.^2)); -endfunction - - - - - - diff --git a/abcd_free_space.m b/abcd_free_space.m new file mode 100644 index 0000000..e6af144 --- /dev/null +++ b/abcd_free_space.m @@ -0,0 +1,6 @@ +function fs_abcd = abcd_free_space( distance) +% abcd matrix for the free space region of given distance + fs_abcd=[1, distance; 0,1]; +endfunction + + diff --git a/abcd_lens.m b/abcd_lens.m new file mode 100644 index 0000000..55c23bd --- /dev/null +++ b/abcd_lens.m @@ -0,0 +1,6 @@ +function lens_abcd =abcd_lens(focal_distance) +% abcd matrix of the lens with given focal length + lens_abcd = [1, 0; -1/focal_distance, 1]; +endfunction + + diff --git a/arrange_optics_along_x.m b/arrange_optics_along_x.m new file mode 100644 index 0000000..62db960 --- /dev/null +++ b/arrange_optics_along_x.m @@ -0,0 +1,19 @@ +function optics = arrange_optics_along_x(optics_unsorted) +% arrange optics in proper order so its x position increases with consequent index + N=length(optics_unsorted); + + % assign x positions + x=zeros(1,N); + for i=1:N + x(i)=optics_unsorted{i}.x; + end + + [xs,indx]=sort(x); + cntr=1; + for i=indx + optics{cntr}=optics_unsorted{i}; + cntr=cntr+1; + end +end + + @@ -0,0 +1,7 @@ +function [waste,radius] =q2wr(q, lambda) +% convert Gaussian beam q parameter to waste and radius + waste=sqrt (-lambda./pi./imag(1./q)); + radius=(1./real(1./q)); +endfunction + + diff --git a/q_after_abcd.m b/q_after_abcd.m new file mode 100644 index 0000000..fd1f905 --- /dev/null +++ b/q_after_abcd.m @@ -0,0 +1,6 @@ +function qnew=q_after_abcd(q_old,abcd) +% calculates q parameter after propagating through element with given abcd matrix + qnew=(q_old*abcd(1,1)+abcd(1,2))/(q_old*abcd(2,1)+abcd(2,2)); +endfunction + + diff --git a/solution_visualization.m b/solution_visualization.m index b26e13c..a47d27c 100644 --- a/solution_visualization.m +++ b/solution_visualization.m @@ -1,3 +1,4 @@ +source('abcd.m'); source('answ.txt'); @@ -0,0 +1,5 @@ +function q=wr2q(waste,R,lambda) +% convert Gaussian beam waste and radius to q parameter + q=1./(1./R-1i.*lambda./pi./(waste.^2)); +endfunction + |