CUDA
C/C++    Fortran   

Gradient or grid construction

Functions

array diff1 (const array &in, int dim=-1)
 difference between elements along a dimension
array diff2 (const array &in, int dim=-1)
 difference between the difference of elements along a dimension
void grad (array &dx, array &dy, const array &in)
 Gradient of a matrix (central differencing).

Function Documentation

array af::diff1 ( const array &  in,
int  dim = -1 
)

difference between elements along a dimension

   array a; // a =    [0 1 2 3 4 5]
   print(diff1(a)); // [1 1 1 1 1]

   array b; // b = [0 2 4]
            //     [1 3 5]

   //Difference along first dimension, down columns
   print(diff1(b));   // diff1(b) = [1 1 1]

   //Difference alone second dimension, across rows
   print(diff1(b,1)); // diff1(b,1) = [2 2]
                      //              [2 2]
Parameters:
[in]in
[in]dimdimension along which to operate (-1 indicates first non-singleton dimension)
Returns:
difference between neighboring elements
Examples:
examples/pde/fdtd.cpp.
array af::diff2 ( const array &  in,
int  dim = -1 
)

difference between the difference of elements along a dimension

   float f[] = {5,10,20,25,50,100};
   array a(6,1,f); //a = f

   //take diff1 twice
   array b = diff1(a); //b=[5 10 5 25 50]
   array c = diff1(b); //c=[5 -5 20 25]

   //or use diff2 once
   array d = diff2(a); //d=c=[5 -5 20 25]
Parameters:
[in]in
[in]dimdimension along which to operate (-1 indicates first non-singleton dimension)
Returns:
second order difference between elements
void af::grad ( array &  dx,
array &  dy,
const array &  in 
)

Gradient of a matrix (central differencing).

   array a; //a = [4  5  3]
            //    [8 10  9]
            //    [9 15 20]

   array dx,dy;
   grad(dx,dy,a);

   // Horizontal gradient
   // dx = [1 -0.5 -2]
   //      [2  0.5 -1]
   //      [6  5.5  5]

   // Vertical gradient
   // dy = [4   5   6]
   //      [2.5 5 8.5]
   //      [1   5  11]
Parameters:
[in]in2D
[out]dxgradient along the first dimension
[out]dygradient along the second dimension