Coherent Backscattering from Multiple Scattering Systems - KOPS ...

Coherent Backscattering from Multiple Scattering Systems - KOPS ... Coherent Backscattering from Multiple Scattering Systems - KOPS ...

kops.ub.uni.konstanz.de
from kops.ub.uni.konstanz.de More from this publisher
26.12.2013 Views

MATLAB codes end % calculate profile endpoints at the image borders if 0

Evaluation of the small angle data % calculate intensity profile part1 = improfile ( matrix, [endpoints(1),position(1)] , ... [endpoints(3),position(2)] ) ; part2 = improfile ( matrix, [position(1),endpoints(2)] , ... [position(2),endpoints(4)] ) ; part2 = part2(2:end) ; % first pixel is already in part1 ! intensity = [part1;part2] ; % calculate error profile part1 = improfile ( errormatrix, [endpoints(1),position(1)] , ... [endpoints(3),position(2)] ) ; part2 = improfile ( errormatrix, [position(1),endpoints(2)] , ... [position(2),endpoints(4)] ) ; part2 = part2(2:end) ; % first pixel is already in part1 ! error = [part1;part2] ; % calculate scale if range > 1 modulo1 = mod ( size(part1,1) - ceil(range/2) , range ) ; modulo2 = mod ( size(part2,1) - floor(range/2) , range ) ; intensity = intensity ( modulo1+1 : size(part1,1)+size(part2,1)-modulo2 ) ; intensity = reshape (intensity, range, []) ; error = error ( modulo1+1 : size(part1,1)+size(part2,1)-modulo2 ) ; error = reshape (error, range, []) ; weight = 1 ./ error.^2 ; weighted_intensity = intensity .* weight ; intensity = sum (weighted_intensity, 1) ./ sum (weight, 1) ; intensity = intensity’ ; error = 1 / sqrt(range) .* 1 ./ sqrt ( sum (weight, 1) ) ; error = error’ ; else modulo1 = 0 ; end length = sqrt ( ( x_end - x_start )^2 + ( y_end - y_start )^2 ) ; number = size ( intensity , 1 ) ; pixels = 1 : length/number : length ; pixels = pixels - pixels( ceil ( ( size(part1,1) - modulo1 ) / range ) ) ; pixels = pixels’ ; end 91

Evaluation of the small angle data<br />

% calculate intensity profile<br />

part1 = improfile ( matrix, [endpoints(1),position(1)] , ...<br />

[endpoints(3),position(2)] ) ;<br />

part2 = improfile ( matrix, [position(1),endpoints(2)] , ...<br />

[position(2),endpoints(4)] ) ;<br />

part2 = part2(2:end) ; % first pixel is already in part1 !<br />

intensity = [part1;part2] ;<br />

% calculate error profile<br />

part1 = improfile ( errormatrix, [endpoints(1),position(1)] , ...<br />

[endpoints(3),position(2)] ) ;<br />

part2 = improfile ( errormatrix, [position(1),endpoints(2)] , ...<br />

[position(2),endpoints(4)] ) ;<br />

part2 = part2(2:end) ; % first pixel is already in part1 !<br />

error = [part1;part2] ;<br />

% calculate scale<br />

if range > 1<br />

modulo1 = mod ( size(part1,1) - ceil(range/2) , range ) ;<br />

modulo2 = mod ( size(part2,1) - floor(range/2) , range ) ;<br />

intensity = intensity ( modulo1+1 : size(part1,1)+size(part2,1)-modulo2 ) ;<br />

intensity = reshape (intensity, range, []) ;<br />

error = error ( modulo1+1 : size(part1,1)+size(part2,1)-modulo2 ) ;<br />

error = reshape (error, range, []) ;<br />

weight = 1 ./ error.^2 ;<br />

weighted_intensity = intensity .* weight ;<br />

intensity = sum (weighted_intensity, 1) ./ sum (weight, 1) ;<br />

intensity = intensity’ ;<br />

error = 1 / sqrt(range) .* 1 ./ sqrt ( sum (weight, 1) ) ;<br />

error = error’ ;<br />

else<br />

modulo1 = 0 ;<br />

end<br />

length = sqrt ( ( x_end - x_start )^2 + ( y_end - y_start )^2 ) ;<br />

number = size ( intensity , 1 ) ;<br />

pixels = 1 : length/number : length ;<br />

pixels = pixels - pixels( ceil ( ( size(part1,1) - modulo1 ) / range ) ) ;<br />

pixels = pixels’ ;<br />

end<br />

91

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!