Navigation

Operators and Keywords

Function List:

C++ API

__interp_cube__.m File Reference


Functions

 elseif (isvector(x)&&isvector(y)&&isvector(z)) x
else error ("x, y, z have wrong dimensions")
endif if (size(val)!=[length(x), length(y), length(z)]) error("val has wrong dimensions")
endif if (size(v, 2)!=3) error("v has to be N*3 matrix")
endif if (!ischar(req)) error("Invalid request parameter use 'values'
endif if (isempty(v)) Vxyz
otherwise error ("Invalid request type '%s', use 'values', 'normals' or 'normals8'", req)
 idx (:, 2)
 frac (:, 2)
 idx (:, 1)
 frac (:, 1)
 idx (:, 3)
 frac (:, 3)

Variables

 function [Vxyz, idx, frac]
 y = squeeze (y(:,1,1))(:)
 z = squeeze (z(1,1,:))(:)
endif normals or normals8 = cube_idx (x, y, z, v)
return endif switch req case values [Vxyz, idx, frac] = interp_cube_trilin (x, y, z, val, v)
case normals [idx, frac] = cube_idx (x, y, z, v)
 dx = x(2:end) - x(1:end-1)
 dy = y(2:end) - y(1:end-1)
 dz = z(2:end) - z(1:end-1)
dz(end)](idx( p000 = [v(:, 1) - dx, v(:, 2) - dy, v(:, 3) - dz]
 p100 = [v(:, 1) + dx, v(:, 2) - dy, v(:, 3) - dz]
 p010 = [v(:, 1) - dx, v(:, 2) + dy, v(:, 3) - dz]
 p001 = [v(:, 1) - dx, v(:, 2) - dy, v(:, 3) + dz]
 p011 = [v(:, 1) - dx, v(:, 2) + dy, v(:, 3) + dz]
 p101 = [v(:, 1) + dx, v(:, 2) - dy, v(:, 3) + dz]
 p110 = [v(:, 1) + dx, v(:, 2) + dy, v(:, 3) - dz]
 p111 = [v(:, 1) + dx, v(:, 2) + dy, v(:, 3) + dz]
 v000 = interp_cube_trilin (x, y, z, val, p000)
 v100 = interp_cube_trilin (x, y, z, val, p100)
 v010 = interp_cube_trilin (x, y, z, val, p010)
 v001 = interp_cube_trilin (x, y, z, val, p001)
 v011 = interp_cube_trilin (x, y, z, val, p011)
 v101 = interp_cube_trilin (x, y, z, val, p101)
 v110 = interp_cube_trilin (x, y, z, val, p110)
 v111 = interp_cube_trilin (x, y, z, val, p111)
 Dx = -v000 .+ v100 .- v010 .- v001 .- v011 .+ v101 .+ v110 .+ v111
 Dy = -v000 .- v100 .+ v010 .- v001 .+ v011 .- v101 .+ v110 .+ v111
 Dz = -v000 .- v100 .- v010 .+ v001 .+ v011 .+ v101 .- v110 .+ v111
 Vxyz = 0.5 .* [Dx./dx, Dy./dy, Dz./dz]
 sval = size (val)
 i000 = sub2ind (sval, idx(:, 1), idx(:, 2), idx(:, 3))
 i100 = sub2ind (sval, idx(:, 1)+1, idx(:, 2), idx(:, 3))
 i010 = sub2ind (sval, idx(:, 1), idx(:, 2)+1, idx(:, 3))
 i001 = sub2ind (sval, idx(:, 1), idx(:, 2), idx(:, 3)+1)
 i101 = sub2ind (sval, idx(:, 1)+1, idx(:, 2), idx(:, 3)+1)
 i011 = sub2ind (sval, idx(:, 1), idx(:, 2)+1, idx(:, 3)+1)
 i110 = sub2ind (sval, idx(:, 1)+1, idx(:, 2)+1, idx(:, 3))
 i111 = sub2ind (sval, idx(:, 1)+1, idx(:, 2)+1, idx(:, 3)+1 )
 Bx = frac(:, 1)
 By = frac(:, 2)
 Bz = frac(:, 3)
 frac = zeros (size (v))

Function Documentation

elseif ( isvector(x)&&isvector(y)&&isvector(z)   ) 

otherwise error ( "Invalid request type '%s'  ,
use 'values ,
'normals'or 'normals8'"  ,
req   
)

else error ( x,
,
z have wrong dimensions"   
)

frac ( ,
 
)

frac ( ,
 
)

frac ( ,
 
)

idx ( ,
 
)

idx ( ,
 
)

idx ( ,
 
)

endif if ( isempty(v)   ) 

endif if ( ischarreq  ) 

endif if ( size(v, 2)!  = 3  ) 

endif if ( size(val)!  = [length(x),
length(y)  ,
length(z)]   
)


Variable Documentation

Bx = frac(:, 1)

By = frac(:, 2)

Bz = frac(:, 3)

Dx = -v000 .+ v100 .- v010 .- v001 .- v011 .+ v101 .+ v110 .+ v111

dx = x(2:end) - x(1:end-1)

Dy = -v000 .- v100 .+ v010 .- v001 .+ v011 .- v101 .+ v110 .+ v111

dx (end)](idx( dy = y(2:end) - y(1:end-1)

Dz = -v000 .- v100 .- v010 .+ v001 .+ v011 .+ v101 .- v110 .+ v111

if(is3d dz = z(2:end) - z(1:end-1)

frac = zeros (size (v))

endfunction function[idx, frac]

Initial value:

 __interp_cube__(x, y, z, val, v, req = "values" )
  if (ismatrix (x) && ndims (x) == 3 && ismatrix (y) && ndims (y) == 3 ...
       && ismatrix (z) && ndims (z) == 3 && size_equal (x, y, z, val))
    x = squeeze (x(1,:,1))(:)

i000 = sub2ind (sval, idx(:, 1), idx(:, 2), idx(:, 3))

i001 = sub2ind (sval, idx(:, 1), idx(:, 2), idx(:, 3)+1)

i010 = sub2ind (sval, idx(:, 1), idx(:, 2)+1, idx(:, 3))

i011 = sub2ind (sval, idx(:, 1), idx(:, 2)+1, idx(:, 3)+1)

i100 = sub2ind (sval, idx(:, 1)+1, idx(:, 2), idx(:, 3))

i101 = sub2ind (sval, idx(:, 1)+1, idx(:, 2), idx(:, 3)+1)

i110 = sub2ind (sval, idx(:, 1)+1, idx(:, 2)+1, idx(:, 3))

i111 = sub2ind (sval, idx(:, 1)+1, idx(:, 2)+1, idx(:, 3)+1 )

endif switch nargout case normals (  )  = cube_idx (x, y, z, v)

case normals8 = cube_idx (x, y, z, v)

dz (end)](idx( p000 = [v(:, 1) - dx, v(:, 2) - dy, v(:, 3) - dz]

p001 = [v(:, 1) - dx, v(:, 2) - dy, v(:, 3) + dz]

p010 = [v(:, 1) - dx, v(:, 2) + dy, v(:, 3) - dz]

p011 = [v(:, 1) - dx, v(:, 2) + dy, v(:, 3) + dz]

p100 = [v(:, 1) + dx, v(:, 2) - dy, v(:, 3) - dz]

p101 = [v(:, 1) + dx, v(:, 2) - dy, v(:, 3) + dz]

p110 = [v(:, 1) + dx, v(:, 2) + dy, v(:, 3) - dz]

p111 = [v(:, 1) + dx, v(:, 2) + dy, v(:, 3) + dz]

sval = size (val)

v000 = interp_cube_trilin (x, y, z, val, p000)

v001 = interp_cube_trilin (x, y, z, val, p001)

v010 = interp_cube_trilin (x, y, z, val, p010)

v011 = interp_cube_trilin (x, y, z, val, p011)

v100 = interp_cube_trilin (x, y, z, val, p100)

v101 = interp_cube_trilin (x, y, z, val, p101)

v110 = interp_cube_trilin (x, y, z, val, p110)

v111 = interp_cube_trilin (x, y, z, val, p111)

return endif switch req case values[Vxyz, idx, frac] = interp_cube_trilin (x, y, z, val, v)

Vxyz = 0.5 .* [Dx./dx, Dy./dy, Dz./dz]

y = squeeze (y(:,1,1))(:)

z = squeeze (z(1,1,:))(:)