functions in yeti.i -
__h_saved_builtins
|
__h_saved_builtins | |
SEE | SAVE_BUILTINS |
__select_file_dir
|
select_file() -or- select_file(dir) Interactively select name of an existing file starting at current working directory or at last selected directory or at DIR if this argument is specified. The function returns full path of selected file or nil [] if no valid selection is made. If keyword FOREVER is true, a file must be selected for the function to return. If keyword ALL is true, then all files and directories get displayed -- even the "hidden" ones which name start with a dot. In any cases, the current and parent directories ("." and "..") get displayed to allow the user to re-scan the current directory or to go into the parent directory. Keyword SUFFIX can be set to a scalar string to only display files that match SUFFIX. Keyword PATTERN can be set to a regular expression to select only files that match PATTERN. For instance, PATTERN="\\.(tgz|tar\\.gz)$" would match any files with suffix ".tgz" or ".tar.gz". Keyword WIDTH can be used to specify a different text width than the default of 79 characters. Keyword PROMPT can be set to change the default prompt: " Select file/directory: " | |
SEE |
ALSO,
lsdir,,
regmatch,,
pretty_print_string_list. |
_h_show_worker
|
h_show, obj; Display contents of hash table OBJ in a tree-like representation. Keyword PREFIX can be used to prepend a prefix to the printed lines. Keyword MAXCNT (default 5) can be used to specify the maximum number of elements for printing array values. | |
SEE ALSO: | h_info, h_keys |
about
|
about, pattern; -or- about, pattern, 1; Search and display documentation about functions (or all symbols if second argument is true) matching regular expression PATTERN. If multiple matches are found, the user is prompted to select a subject. PATTERN may be a string, or a function or structure definition. If PATTERN is a string with a trailing "/i", the other part of the regular expression is interpreted so as to ignore case. | |
SEE |
ALSO,
help,,
info,,
symbol_def,,
symbol_names, |
arc
|
arc(x); Returns angle X wrapped in range (-PI, +PI]. */ |
cost_l2
|
cost_l2(hyper, res [, grd]) -or- cost_l2l1(hyper, res [, grd]) -or- cost_l2l0(hyper, res [, grd]) These functions compute the cost for an array of residuals RES and hyper-parameters HYPER (which can have 1, 2 or 3 elements). If optional third argument GRD is provided, it must be a simple variable reference used to store the gradient of the cost function with respect to the residuals. The cost_l2() function returns the sum of squared residuals times HYPER(1): COST_L2 = MU*sum(RES^2) where MU = HYPER(1). The cost_l2l1() and cost_l2l0() functions are quadratic (L2) for small residuals and non-quadratic (L1 and L0 respectively) for larger residuals. The thresholds for L2 / non-L2 transition are given by the second and third value of HYPER. If HYPER = [MU, TINF, TSUP] with TINF < 0 and TSUP > 0, an asymmetric cost function is computed as: COST_L2L0 = MU*(TINF^2*sum(atan(RES(INEG)/TINF)^2) + TSUP^2*sum(atan(RES(IPOS)/TPOS)^2)) COST_L2L1 = 2*MU*(TINF^2*sum(RES(INEG)/TINF - log(1 + RES(INEG)/TINF)) + TSUP^2*sum(RES(IPOS)/TSUP - log(1 + RES(IPOS)/TSUP))) with INEG = where(RES < 0) and IPOS = where(RES >= 0). If any or the thresholds is negative or zero, the L2 norm is used for residuals with the corresponding sign (same as having an infinite threshold level). The different cases are: TINF < 0 ==> L2-L1/L0 norm for negative residuals TINF = 0 ==> L2 norm for negative residuals TSUP = 0 ==> L2 norm for positive residuals TSUP > 0 ==> L2-L1/L0 norm for positive residuals For residuals much smaller (in magnitude) than the thresholds, the non-L2 cost function behave as the L2 one. For residuals much larger (in magnitude), than the thresholds, the L2-L1 cost function is L1 (i.e. scales as abs(RES)) and the L2-L0 cost function is L0 (tends to saturate). If HYPER = [MU, T], with T>0, a symmetric non-L2 cost function is computed with TINF = -T and TSUP = +T; in other words: COST_L2L0 = MU*T^2*sum(atan(RES/T)^2) COST_L2L1 = 2*MU*T^2*sum(abs(RES/T) - log(1 + abs(RES/T))) If HYPER has only one element (MU) the L2 cost function is used. Note that HYPER = [MU, 0] or HYPER = [MU, 0, 0] is the same as HYPER = MU (i.e. L2 cost function). | |
SEE ALSO: |
cost_l2l0
|
cost_l2l0 | |
SEE | cost_l2 |
cost_l2l1
|
cost_l2l1 | |
SEE | cost_l2 |
current_include
|
current_include() If Yorick is parsing a file, this function returns the absolute path of this file; otherwise, this function returns nil. | |
SEE | ALSO, include,, require. |
DBL_EPSILON
|
machine_constant(str) Returns the value of the machine dependent constant given its name STR. STR is a scalar string which can be one of (prefixes "FLT_" and "DBL_" are for single/double precision respectively): "FLT_MIN", "DBL_MIN" - minimum normalized positive floating-point number; "FLT_MAX", "DBL_MAX" - maximum representable finite floating-point number; "FLT_EPSILON", "DBL_EPSILON" - the difference between 1 and the least value greater than 1 that is representable in the given floating point type: B^(1 - P); "FLT_MIN_EXP", "DBL_MIN_EXP" - minimum integer EMIN such that FLT_RADIX^(EMIN - 1) is a normalized floating-point value; "FLT_MIN_10_EXP" "DBL_MIN_10_EXP" - minimum negative integer such that 10 raised to that power is in the range of normalized floating-point numbers: ceil(log10(B)*(EMIN - 1)); "FLT_MAX_EXP", "DBL_MAX_EXP" - maximum integer EMAX such that FLT_RADIX^(EMAX - 1) is a normalized floating-point value; "FLT_MAX_10_EXP" "DBL_MAX_10_EXP" - maximum integer such that 10 raised to that power is in the range of normalized floating-point numbers: floor(log10((1 - B^(-P))*(B^EMAX))) "FLT_RADIX" - radix of exponent representation, B; "FLT_MANT_DIG", "DBL_MANT_DIG" - number of base-FLT_RADIX significant digits P in the mantissa; "FLT_DIG", "DBL_DIG" - number of decimal digits, Q, such that any floating-point number with Q decimal digits can be rounded into a floating-point number with P (FLT/DBL_MANT_DIG) radix B (FLT_RADIX) digits and back again without change to the Q decimal digits: Q = P*log10(B) if B is a power of 10 Q = floor((P - 1)*log10(B)) otherwise | |
SEE ALSO: | get_encoding |
DBL_MAX
|
DBL_MAX | |
SEE | DBL_EPSILON |
DBL_MIN
|
DBL_MIN | |
SEE | DBL_EPSILON |
filepath
|
filepath(file); Return full path name of file(s). Argument FILE can be either an open binary/text file or an array of file names (in the latter case tilde expansion is performed and the result will have the same shape as input). | |
SEE | ALSO, open. |
FLT_EPSILON
|
FLT_EPSILON | |
SEE | DBL_EPSILON |
FLT_MAX
|
FLT_MAX | |
SEE | DBL_EPSILON |
FLT_MIN
|
FLT_MIN | |
SEE | DBL_EPSILON |
get_encoding
|
get_encoding(name); Return the data layout for machine NAME, one of: "native" the current machine (little-endians) "i86" Intel x86 Linux "ibmpc" IBM PC (2 byte int) "alpha" Compaq alpha "dec" DEC workstation (MIPS), Intel x86 Windows "vax" DEC VAX (H-double) "vaxg" DEC VAX (G-double) (big-endians) "xdr" External Data Representation "sun" Sun, HP, SGI, IBM-RS6000, MIPS 32 bit "sun3" Sun-2 or Sun-3 (old) "sgi64" SGI, Sun, HP, IBM-RS6000 64 bit "mac" MacIntosh 68000 (power Mac, Gx are __sun) "macl" MacIntosh 68000 (12 byte double) "cray" Cray XMP, YMP The result is a vector of 32 long's as follow: [size, align, order] repeated 6 times for char, short, int, long, float, and double, except that char align is always 1, so result(2) is the structure alignment (see struct_align). [sign_address, exponent_address, exponent_bits, mantissa_address, mantissa_bits, mantissa_normalization, exponent_bias] repeated twice for float and double. See the comment at the top of file prmtyp.i for an explanation of these fields. The total number of items is therefore 3*6 + 7*2 = 32. | |
SEE |
ALSO,
get_primitives,,
set_primitives,,
install_encoding,, machine_constant. |
get_includes
|
get_includes() Returns an array of strings with the names of all included files so far. | |
SEE ALSO: | set_path, current_include |
h_cleanup
|
h_cleanup, obj, 0/1; -or- h_cleanup(obj, 0/1); Delete all void members of hash table object OBJ and return OBJ. If the second argument is a true (non nil and non-zero) empty members get deleted recursively. | |
SEE | ALSO, h_new. |
h_clone
|
h_clone(obj, copy=, depth=); Make a new hash table with same contents as OBJ. If keyword COPY is true, a fresh copy is made for array members. Otherwise, array members are just referenced one more time by the new hash table. If keyword DEPTH is non-zero, every hash table object referenced by OBJ get also cloned (this is done recursively) until level DEPTH has been reached (infinite recursion if DEPTH is negative). The value of keyword COPY is kept the same across the recursions. | |
SEE | ALSO, h_new,, h_set,, h_copy. |
h_copy
|
h_copy(obj); -or- h_copy(obj, recursively); Effectively copy contents of hash table object OBJ into a new hash table that is returned. If argument RECURSIVELY is true, every hash table object contained into OBJ get also duplicated. This routine is needed because doing CPY=OBJ, where OBJ is a hash table object, would only make a new reference to OBJ: CPY and OBJ would be the same object. | |
SEE | ALSO, h_new,, h_set,, h_clone. |
h_debug
|
h_debug, object, ... Print out some debug information on OBJECT. **************************** *** WILL BE REMOVED SOON *** ****************************/ |
h_delete
|
h_delete(obj, "key", ...) Delete members KEY, ... from hash table object OBJ and return it. Any KEY arguments may be present and must be array of strings or nil. | |
SEE | ALSO, h_new,, h_pop. |
h_evaluator
|
h_evaluator(obj) -or- h_evaluator(obj, evl); -or- h_evaluator, obj, evl; Set/query evaluator function of hash table object OBJ. When called as a function, the evaluator of OBJ prior to any change is returned as a scalar string. If EVL is specified, it becomes the new evaluator of OBJ. EVL must be a scalar string (the name of the evaluator function), or a function, or nil. If EVL is explicitely nil (for instance []) or a NULL-string (for instance string(0)), the default behaviour is restored. When hash table object OBJ is used as: OBJ(...) where "..." represents any list of arguments (including none) then its evaluator get called as: EVL(OBJ, ...) that is with OBJ prepended to the same argument list. EXAMPLES: // create a hash table object: obj = h_new(data=random(200), count=0); // define a fucntion: func eval_me(self, incr) { if (incr) h_set, self, count = (self.count + incr); return self.data(1 + abs(self.count)%200); } // set evaluator (which must be already defined as a function): h_evaluator, obj, eval_me; obj(49); // return 49-th value obj(); // return same value obj(3); // return 51-th value h_evaluator, obj, []; // restore standard behaviour // set evaluator (not necessarily already defined as a function): h_evaluator, obj, "some_name"; // then define the function code prior to use: func some_name(self, a, b) { return self.count; } | |
SEE ALSO: | h_new, h_get |
h_first
|
h_first(obj) -or- h_next(obj, key) Get first or next key in hash table object OBJ. Useful to run through all entries in a hash table (however beware that the hash table should be left unchanged during the scan). For instance: for (key = h_first(obj) ; key ; key = h_next(obj, key)) { value = obj(key); ...; } | |
SEE | ALSO, h_new,, h_keys. |
h_get
|
h_get(obj, key=); -or- h_get(obj, "key"); Returns the value of member KEY of hash table object OBJ. If no member KEY exists in OBJ, nil is returned. h_get(OBJ, "KEY") is identical to get_member(OBJ, "KEY") and also to OBJ("KEY"). | |
SEE | ALSO, h_new,, get_member. |
h_has
|
h_has(obj, "key") -or- h_has(obj, key=) Returns 1 if member KEY is defined in hash table object OBJ, else 0. | |
SEE | ALSO, h_new. |
h_info
|
h_info, obj; -or- h_info, obj, align; List contents of hash table OBJ in alphabetical order of keys. If second argument is true, the key names are right aligned. | |
SEE ALSO: | h_new, h_keys, h_first, h_next, h_show, sort |
h_keys
|
h_keys(obj) Returns list of members of hash table object OBJ as a string vector of key names. The order in which keys are returned is arbitrary. | |
SEE | ALSO, h_new,, h_first,, h_next,, h_number. |
h_list
|
h_list(obj) -or- h_list(obj, sorted) Convert hash table object OBJ into a list: _lst("KEY1", VALUE1, ...). The order of key-value pairs is arbitrary unless argument SORTED is true in which case keys get sorted in alphabetical order. | |
SEE | ALSO, h_new,, _lst,, sort. |
h_new
|
h_new(); -or- h_new(key=value, ...); -or- h_new("key", value, ...); Returns a new hash table object with member(s) KEY set to VALUE. There may be any number of KEY-VALUE pairs. A particular member of a hash table OBJ can be specified as a scalar string, i.e. "KEY", or using keyword syntax, i.e. KEY=. The keyword syntax is however only possible if KEY is a valid Yorick's symbol name. VALUE can be anything (even a non-array object). A hash table object can be used to implement some kind of object-oriented abstraction in Yorick. However, in Yorick, a hash table must have a simple tree structure -- no loops or rings are allowed (loops break Yorick's memory manager -- beware). You need to be careful not to do this as the error will not be detected. The difference between a hash table object and a list object is that items are retrieved by key identifier rather than by order (by h_get, get_member or dot dereferenciation). It is possible to dereference the contents of OBJ using the dot operator (as for a structure) or the get_member function. For instance, it is legal to do: obj = h_new(x=span(-7,7,100), name="my name", op=sin, scale=33); plg, obj.op(obj.x), obj.x; but the member must already exists and there are restrictions to assignation, i.e. only contents of array members can be assigned: obj.name() = "some other string"; // ok obj.name = "some other string"; // error obj.x(RANGE_OR_INDEX) = EXPR; // ok if conformable AND member X // is not a 'fast' scalar (int, // long or double scalar) obj.x = EXPR; // error and assignation cannot therefore change the dimension list or data type of a hash table member. Redefinition/creation of a member can always be performed with the h_set function which is the recommended method to set the value of a hash table member. Hash table objects behave differently depending how they are used: obj.key - de-reference hash member obj("key") - returns member named "key" in hash table object OBJ, this is exactly the same as: h_get(obj, "key") obj() - returns number of elements in hash table OBJ obj(i) - returns i-th member in hash table OBJ; i is a scalar integer and can be less or equal zero to start from the last one; if the hash table is unmodified, obj(i) is the same as obj(keys(i)) where keys=h_keys(obj). However, beware that the behaviour of calls such that OBJ(...) may be changed if the has table object implements its own "evaluator" (see h_evaluator). For instance, to explorate the whole hash table, there are two possibilities: keys = h_keys(obj); n = numberof(keys); // -or- n = obj() for (i=1 ; i<=n ; ++i) { a = obj(key(i)); ...; } or: n = obj(); for (i=1 ; i<=n ; ++i) { a = obj(i); ...; } the second form is simpler but is slower for large tables. An important point to remember when using hash table is that hash members are references to their contents, i.e. h_set, hash, member=x; makes an additional reference to array X and does not copy the array although you can force that, e.g.: tmp = x; // make a copy of array X h_set, hash, member=tmp; // reference copy in hash table tmp = []; // delete one reference to the copy Because assignation result is its rhs (right-hand-side), you cannot do: h_set, hash, member=(tmp = x); // assignation result is X Similarly, unlike Yorick array data types, a statement like x=hash does not make a copy of the hash table, it merely makes an additional reference to the list. CAVEATS: In Yorick (or Yeti), many objects can be used to reference other objects: pointers, lists and hash tables. Since Yorick uses a simple reference counter to delete unused object, cyclic references (i.e. an object referencing itself either directly or indirectly) result in objects that will not be properly deleted. It is the user reponsibility to create no cyclic references in order to avoid memory leaks. Checking a potential (or effective) cyclic reference would require recursive investigation of all members of the parent object and could be very time consuming. | |
SEE ALSO: |
h_copy,
h_get,
h_has,
h_keys,
h_pop,
h_set,
h_stat, h_first, h_next, _lst, get_member |
h_next
|
h_next | |
SEE | h_first |
h_number
|
h_number(obj) Returns number of entries in hash table object OB. | |
SEE | ALSO, h_new,, h_keys. |
h_pop
|
h_pop(obj, "key") -or- h_pop(obj, key=) Pop member KEY out of hash table object OBJ and return it. When called as a subroutine, the net result is therefore to delete the member from the hash table. | |
SEE | ALSO, h_new,, h_delete. |
h_restore_builtin
|
h_restore_builtin | |
SEE | SAVE_BUILTINS |
h_save_symbols
|
h_save_symbols(namelist, ...); -or- h_save_symbols(flag); Return hash table which references symbols given in NAMELIST or selected by FLAG (see symbol_names). Of course, the symbol names will be used as member names in the result. | |
SEE |
ALSO,
h_new,,
h_restore_builtin,,
symbol_names. |
h_set
|
h_set, obj, key=value, ...; -or- h_set, obj, "key", value, ...; Stores VALUE in member KEY of hash table object OBJ. There may be any number of KEY-VALUE pairs. If called as a function, the return value is OBJ. | |
SEE | ALSO, h_new,, h_set_copy. |
h_set_copy
|
h_set_copy, obj, key, value, ...; Set member KEY (a scalar string) of hash table OBJ with VALUE. Unlike h_set, VALUE is duplicated if it is an array. There may be any number of KEY-VALUE pairs. | |
SEE | ALSO, h_copy,, h_new,, h_set. |
h_show
|
h_show | |
SEE | _h_show_worker |
h_stat
|
h_stat(obj) Returns an histogram of the slot occupation in hash table object OBJ. The result is a long integer vector with i-th value equal to the number of slots with (i-1) items. Note: efficient hash table should keep the number of items per slot as low as possible. | |
SEE | ALSO, h_new. |
heapsort
|
heapsort(a) -or- heapsort, a; When called as a function, returns a vector of numberof(A) longs containing index values such that A(heapsort(A)) is a monotonically increasing vector. When called as a subroutine, performs in-place sorting of elements of array A. This function uses the heap-sort algorithm which may be superior to the quicksort algorithm (for instance for integer valued arrays). Beware that headpsort(A) and sort(A) differ for multidimensional arrays. | |
SEE ALSO: | quick_select, sort |
identof
|
identof | |
SEE | T_CHAR |
install_encoding
|
install_encoding, file, encoding; Set layout of primitive data types for binary stream FILE. ENCODING may be one of the names accepted by get_encoding or an array of 32 integers as explained in get_encoding documentation. | |
SEE ALSO: | get_encoding, install_struct |
insure_temporary
|
insure_temporary, var1 [, var2, ...]; Insure that symbols VAR1 (VAR2 ...) are temporary variables referring to arrays. Useful prior to in-place operations to avoid side-effects for caller. | |
SEE ALSO: | eq_nocopy, nrefsof, swap, unref |
is_complex
|
is_complex | |
SEE | is_integer |
is_hash
|
is_hash(object) Returns 1, if OBJECT is a regular hash table; returns 2, if OBJECT is a hash table with a specialized evaluator; returns 0, if OBJECT is not a hash table. | |
SEE ALSO: |
h_new,
h_evaluator,
is_array,
is_func,
is_integer, is_list, is_range, is_scalar, is_stream, is_struct, is_void |
is_integer
|
is_integer(x) -or- is_real(x) -or- is_complex(x) -or- is_numerical(x) -or- is_string(x) -or- is_pointer(x) These functions return true if X is an array of type: integer, real (i.e. double or float), complex, numerical (i.e. integer, real or complex), string, or pointer. | |
SEE ALSO: |
structof,
dimsof,
is_array,
is_func,
is_hash,
is_list, is_range, is_scalar, is_stream, is_struct, is_void |
is_matrix
|
is_matrix | |
SEE | is_scalar |
is_numerical
|
is_numerical | |
SEE | is_integer |
is_pointer
|
is_pointer | |
SEE | is_integer |
is_real
|
is_real | |
SEE | is_integer |
is_scalar
|
is_scalar(x) -or- is_vector(x) -or- is_matrix(x) These functions return true if X is (respectively) a scalar, a vector (i.e. a 1-D array), or a matrix (i.e. a 2-D array). | |
SEE ALSO: |
dimsof,
is_array,
is_func,
is_hash,
is_integer, is_list, is_range, is_stream, is_struct, is_void |
is_sparse_matrix
|
is_sparse_matrix(obj) Returns true if OBJ is a sparse matrix object; false otherwise. | |
SEE ALSO: | sparse_matrix |
is_string
|
is_string | |
SEE | is_integer |
is_symlink
|
is_symlink | |
SEE | symlink_to_variable |
is_vector
|
is_vector | |
SEE | is_scalar |
machine_constant
|
machine_constant | |
SEE | DBL_EPSILON |
make_dimlist
|
make_dimlist(arg1, arg2, ...) -or- make_dimlist, arg1, arg2, ...; Concatenate all arguments as a single dimension list. The function form returns the resulting dimension list whereas the subroutine form redefines the contents of its first argument which must be a simple variable reference. The resulting dimension list is always of the form [NDIMS, DIM1, DIM2, ...]. EXAMPLES In the following example, a first call to make_dimlist is needed to make sure that input argument DIMS is a valid dimension list if there are no other input arguments: func foo(a, b, dims, ..) { // build up dimension list: make_dimlist, dims; while (more_args()) make_dimlist, dims, next_arg(); ...; } Here is an other example: func foo(a, b, ..) { // build up dimension list: dims = [0]; while (more_args()) make_dimlist, dims, next_arg(); ...; } | |
SEE ALSO: | array, build_dimlist |
mem_base
|
mem_base(array); -or- mem_copy, address, expression; -or- mem_peek(address, type, dimlist); Hacker routines to read/write data at given memory location. These routines allow the user to de _very_ nasty but sometimes needed things and do not provide the safety level of ususal Yorick routines, and must therefore be used with extreme care (you've bee warned). In all these routines, ADDRESS is either a long integer scalar or a scalar pointer (e.g. &OBJECT). mem_base returns the address (as a long scalar) of the first element of array object ARRAY. You can use this function if you need to add some offset to the address of an object, e.g. to reach some particular element of an array or a structure. mem_copy copy the contents of EXPRESSION at memory location ADDRESS. mem_peek returns a new array of data type TYPE and dimension list DIMLIST filled with memory contents starting at address ADDRESS. EXAMPLE The following statement converts the contents of complex array Z as an array of doubles: X = mem_peek(mem_base(Z), double, 2, dimsof(Z)); then: X(1,..) is Z.re X(2,..) is Z.im | |
SEE | ALSO, reshape,, native_byte_order. |
mem_copy
|
mem_copy | |
SEE | mem_base |
mem_info
|
mem_info; -or- mem_info, count; Print out some information about memory occupation. If COUNT is specified, the COUNT biggest (in bytes) symbols are listed (use COUNT<0 to list all symbols sorted by size). BUGS: Only the memory used by Yorick's array symbols is considered, e.g. arrays only referenced by a pointer are not considered. Symbols which are aliases (e.g. by using eq_nocopy) may be considered several times. | |
SEE ALSO: | symbol_def, symbol_info, symbol_names |
mem_peek
|
mem_peek | |
SEE | mem_base |
morph_closing
|
morph_closing(a, r); -or- morph_opening(a, r); Perform an image closing/closing of A by a structuring element R. A closing is a dilation followed by an erosion, whereas an opening is an erosion followed by a dilation. See morph_dilation for the meaning of the arguments. | |
SEE ALSO: |
morph_dilation,
morph_white_top_hat,
morph_black_top_hat |
morph_dilation
|
morph_dilation(a, r); -or- morph_erosion(a, r); These functions perform a dilation/erosion morpho-math operation onto input array A which must have at most 3 dimensions. A dilation (erosion) operation replaces every voxel of A by the maximum (minimum) value found in the voxel neighborhood as defined by the structuring element. Argument R defines the structuring element as follows: - If R is a scalar integer, then it is taken as the radius (in voxels) of the structuring element. - Otherwise, R gives the offsets of the structuring element relative to the coordinates of the voxel of interest. In that case, R must an array of integers with last dimension equals to the number of dimensions of A. In other words, if A is a 3-D array, then the offsets are: DX = R(1,..) DY = R(2,..) DZ = R(3,..) and the neighborhood of a voxel at (X,Y,Z) is defined as: (X + DX(I), Y + DY(I), Z + DZ(i)) for i=1,...,numberof(DX). Conversely, R = [DX, DY, DZ]. Thanks to that definition, structuring element with arbitrary shape and relative position can be used in morpho-math operations. For instance, the dilation of an image (a 2-D array) IMG by a 3-by-5 rectangular structuring element centered at the pixel of interest is obtained by: dx = indgen(-1:1); dy = indgen(-2:2); result = morph_dilation(img, [dx, dy(-,)]) | |
SEE ALSO: |
morph_closing,
morph_opening,
morph_white_top_hat, morph_black_top_hat |
morph_erosion
|
morph_erosion | |
SEE | morph_dilation |
morph_opening
|
morph_opening | |
SEE | morph_closing |
morph_white_top_hat
|
morph_white_top_hat(a, r); -or- morph_white_top_hat(a, r, s); -or- morph_black_top_hat(a, r); -or- morph_black_top_hat(a, r, s); Perform a summit/valley detection by applying a top-hat filter to array A. Argument R defines the structuring element for the feature detection. Optional argument gives the structuring element used to apply a smoothing to A prior to the top-hat filter. If R and S are specified as the radii of the structuring elements, then S should be smaller than R. For instance: morph_white_top_hat(bitmap, 3, 1) may be used to detect text or lines in a bimap image. | |
SEE ALSO: | morph_dilation, morph_closing |
mvmult
|
y = mvmult(a, x); -or- y = mvmult(a, x, 0/1); Returns the result of (generalized) matrix-vector multiplication of vector X (a regular Yorick array) by matrix A (a regular Yorick array or a sparse matrix). The matrix-vector multiplication is performed as if there is only one index running over the elements of X and the trailing/leading dimensions of A. If optional last argument is omitted or false, the summation index runs across the trailing dimensions of A which must be the same as those of X and the dimensions of the result are the remaining leading dimensions of A. If optional last argument is 1, the matrix operator is transposed: the summation index runs across the leading dimensions of A which must be the same as those of X and the dimensions of the result are the remaining trailing dimensions of A. | |
SEE ALSO: | sparse_matrix, sparse_squeeze |
name_of_symlink
|
name_of_symlink | |
SEE | symlink_to_variable |
native_byte_order
|
native_byte_order() -or- native_byte_order(type) Returns the native byte order, one of: "LITTLE_ENDIAN", "BIG_ENDIAN", or "PDP_ENDIAN". Optional argument TYPE is an integer data type (default is long). | |
SEE | ALSO, mem_peek. |
nrefsof
|
nrefsof(object) Returns number of references on OBJECT. | |
SEE ALSO: | unref |
pretty_print_string_list
|
pretty_print_string_list, list; -or- pretty_print_string_list(list); Write array of strings LIST in columns. In subroutine form, the result is printed to standard output; otherwise, return an array of strings (one per row). The maximum width (in number of characters) of each row can be precised with keyword WIDTH (default 79). But actual width may be larger, since at least one column is produced. The maximum number of columns may be limited by using keyword MAXCOLS (by default, there is no limit). Keywords BOL, SEP and EOL, can be set to scalar strings to use at begin-of-line, between each column, at end-of-line respectively. SEP can also be the number of spaces to insert between columns. The default are: BOL="", SEP=5 (five spaces) and EOL=string(0). Keyword NUMBERED can be used to number items. If NUMBERED is a scalar string which contains a "%d", it is used to format the index. Otherwise, NUMBERED is the string or the number of spaces to use as separator between indices and items. For instance: numbered="[%d] " yields: "[1] first_item [2] second_item ..." numbered=" - " yields: "1 - first_item 2 - second_item ..." numbered=3 yields: "1 first_item 2 second_item ..." Keyword START can be used to specify the starting index for numbering items (default START=1). | |
SEE | ALSO, swrite. |
quick_interquartile_range
|
quick_interquartile_range(a) Returns the interquartile range of values in array A. | |
SEE | ALSO |
quick_median
|
quick_median(a) Returns the median of values in array A. | |
SEE | ALSO |
quick_select
|
quick_select(a, k [, first, last]) -or- quick_select, a, k [, first, last]; Find the K-th smallest element in array A. When called as a function, the value of the K-th smallest element in array A is returned. When called as a subroutine, the elements of A are re-ordered (in-place operation) so that A(K) is the K-th smallest element in array A and A(J) <= A(K) for J <= K and A(J) >= A(K) for J >= K. Optional arguments FIRST and LAST can be used to specify the indices of the first and/or last element of A to consider: elements before FIRST and after LAST are ignored and left unchanged when called as a subroutine; index K however always refers to the full range of A. By default, FIRST=1 and LAST=numberof(A). Yorick indexing rules are supported for arguments K, FIRST and LAST (i.e. 0 means last element, etc). EXAMPLES The index K which splits a sample of N=numberof(A) elements into fractions ALPHA (before K, that is K - 1 elements) and 1 - ALPHA (after K, that is N - K elements) is such that: (1 - ALPHA)*(K - 1) = ALPHA*(N - K) hence: K = 1 + ALPHA*(N - 1) Accounting for rounding to nearest integer, this leads to: quick_select(A, long(1.5 + ALPHA*(numberof(A) - 1))) Therefore the first inter-quartile split is at (1-based and rounded to nearest integer) index: K1 = (N + 5)/4 (with integer division) the second inter-quartile (median) is at: K2 = N/2 + 1 (with integer division) the third inter-quartile is at: K3 = (3*N + 3)/4 (with integer division) | |
SEE ALSO: |
quick_median,
quick_interquartile_range,
sort, heapsort |
round
|
round(x); Returns X rounded to the nearest integer (as a floating point value). */ |
same_encoding
|
same_encoding(a, b) Compare primitives A and B which must be conformable integer arrays with first dimension equals to 32 (see set_primitives). The result is an array of int's with one less dimension than A-B (the first one). Some checking is performed for the operands. The byte order for the char data type is ignored in the comparison. | |
SEE | ALSO, install_encoding,, get_encoding.*/ |
SAVE_BUILTINS
|
h_restore_builtin(name); Get the original definition of builtin function NAME. This is useful if you deleted by accident a builtin function and want to recover it; for instance: sin = 1; ... sin = h_restore_builtin("sin"); would restore the definition of the sine function that was redefined by the assignation. To enable this feature, you must define the global variable SAVE_BUILTINS to be true before loading the Yeti package. For instance: SAVE_BUILTINS = 1; include, "yeti.i"; then all all current definitions of builtin functions will be referenced in global hash table __h_saved_builtins and could be retrieved by calling h_restore_builtin. Note that this feature is disabled in batch mode. | |
SEE | ALSO, h_new,, h_save_symbols,, batch. |
select_file
|
select_file | |
SEE | __select_file_dir |
select_item_in_string_list
|
select_item_in_string_list(list) Print out array of strings LIST (using pretty_print_string_list) and interactively ask the user a number/item in the list and return the selected item. If keyword INDEX is true, the item number is returned rather than its value. The prompt string can be set with keyword PROMPT (default is " Select one item: "). If keyword FOREVER is true the user is prompted until a valid choice is mage. Other keywords are passed to pretty_print_string_list: NUMFMT (as NUMBERED), WIDTH, SEP, EOL, BOL and MAXCOLS. | |
SEE | ALSO, pretty_print_string_list. |
set_alarm
|
set_alarm, secs, callback; Arrange for function CALLBACK to get called with no argument in SECS seconds. CALLBACK can be specified either as a Yorick function or as a function name. If CALLBACK is given as a name, the symbol is resolved at alarm time (after SECS seconds) this permits to (re)define the effective CALLBACK function before alarm expires. When called as a function, the returned value is the alarm time in WALL seconds. | |
SEE ALSO: | set_idler |
setup_package
|
PACKAGE_HOME = setup_package(); -or- PACKAGE_HOME = setup_package(plugname); The setup_package function must be directly called in a Yorick source file, the so-called Yorick package source file. This function determines the package directory which is the absolute directory name of the package source file and setup Yorick search paths to include this directory. The returned value is the package directory (guaranteed to be terminated by a slash "/"). If PLUGNAME is specified, the corresponding plugin is loaded (preferentially from the package directory). | |
SEE ALSO: |
plug_in,
plug_dir,
current_include,
get_path,
set_path |
sinc
|
sinc(x); Returns the "sampling function" of X as defined by Woodward (1953) and Bracewell (1999): sinc(x) = 1 for x=0 sin(PI*x)/(PI*x) otherwise Note: This definition correspond to the "normalized sinc function"; some other authors may define the sampling function without the PI factors in the above expression. REFERENCES Bracewell, R. "The Filtering or Interpolating Function, sinc(x)." In "The Fourier Transform and Its Applications", 3rd ed. New York: McGraw-Hill, pp. 62-64, 1999. Woodward, P. M. "Probability and Information Theory with Applications to Radar". New York: McGraw-Hill, 1953. | |
SEE ALSO: | sin |
smooth3
|
smooth3(a) Returns array A smoothed by a simple 3-element convolution (but for the edges). In one dimension, the smoothing operation reads: smooth3(A)(i) = C*A(i) + D*(A(i-1) + A(i+1)) but for the first and last element for which: smooth3(A)(1) = E*A(1) + D*A(2) smooth3(A)(n) = E*A(n) + D*A(n-1) where N is the length of the dimension and the coefficients are: C = 0.5 D = 0.25 E = 0.75 With the default value of C (see keyword C below), the smoothing operation is identical to: smooth3(A) = A(pcen)(zcen) for a 1D array smooth3(A) = A(pcen,pcen)(zcen,zcen) for a 2D array ... and so on Keyword C can be used to specify another value for the coefficient C (default: C=0.5); coefficients D and E are computed as follows: D = 0.5*(1 - C) E = 0.5*(1 + C) The default is to smooth A along all its dimensions, but keyword WHICH can be used to specify the only dimension to smooth. If WHICH is less or equal zero, then the smoothed dimension is the last one + WHICH. The smoothing operator implemented by smooth3 has the following properties: 1. The smoothing operator is linear and symmetric (for any number of dimensions in A). The symmetry of the smoothing operator is important for the computation of gradients in regularization. For instance, let Y = smooth3(X) and Q be a scalar function of Y, then then the gradient of Q with respect to X is simply: DQ_DX = smooth3(DQ_DY) where DQ_DY is the gradient of Q with respect to Y. 2. For a vector, A, smooth3(A)=S(,+)*A(+) where the matrix S is tridiagonal: [E D ] [D C D ] [ D C D ] [ \ \ \ ] where, to improve readability, [ \ \ \ ] missing values are all zero. [ D C D ] [ D C D] [ D E] You can, in principle, reverse the smoothing operation with TDsolve along each dimensions of smooth3(A). Note: for a vector A, the operator S-I applied to A (where I is the identity matrix) is the finite difference 2nd derivatives of A (but for the edges). 3. The definition of coefficients C, D and E insure that the smoothing operator does not change the sum of the element values of its argument, i.e.: sum(smooth3(A)) = sum(A). 4. Only an array with all elements having the same value is invariant by the smoothing operator. In fact "slopes" along dimensions of A are almost invariant, only the values along the edges are changed. KEYWORDS: c, which. | |
SEE ALSO: | TDsolve |
sparse_expand
|
a = sparse_expand(s); Convert sparse matrix S into standard Yorick's array A. | |
SEE ALSO: | sparse_squeeze, histogram |
sparse_grow
|
sparse_grow(s, coefs, row_indices, col_indices); Returns a sparse matrix object obtained by growing the non-zero coefficients of S by COEFS with the corresponding row/column indices given by ROW_INDICES and COL_INDICES which must have the same number of elements as COEFS. | |
SEE ALSO: | sparse_matrix |
sparse_matrix
|
s = sparse_matrix(coefs, row_dimlist, row_indices, col_dimlist, col_indices); Returns a sparse matrix object. COEFS is an array with the non-zero coefficients of the full matrix. ROW_DIMLIST and COL_DIMLIST are the dimension lists of the matrix 'rows' and 'columns'. ROW_INDICES and COL_INDICES are the 'row' and 'column' indices of the non-zero coefficients of the full matrix. The sparse matrix object S can be used to perform sparse matrix multiplication as follows: S(x) or S(x, 0) yields the result of matrix multiplication of 'vector' X by S; X must be an array with dimension list COL_DIMLIST (or a vector with as many elements as an array with such a dimension list); the result is an array with dimension list ROW_DIMLIST. S(y, 1) yields the result of matrix multiplication of 'vector' Y by the transpose of S; Y must be an array with dimension list ROW_DIMLIST (or a vector with as many elements as an array with such a dimension list); the result is an array with dimension list COL_DIMLIST. The contents of the sparse matrix object S can be queried as with a regular Yorick structure: S.coefs, S.row_dimlist, S.row_indices, S.col_dimlist or S.col_indices are valid expressions if S is a sparse matrix. | |
SEE ALSO: |
is_sparse_matrix,
mvmult,
sparse_expand,
sparse_squeeze, sparse_grow |
sparse_squeeze
|
s = sparse_squeeze(a); -or- s = sparse_squeeze(a, n); Convert array A into its sparse matrix representation. Optional argument N (default, N=1) is the number of dimensions of the input space. The dimension list of the input space are the N trailing dimensions of A and, assuming that A has NDIMS dimensions, the dimension list of the output space are the NDIMS - N leading dimensions of A. | |
SEE ALSO: | sparse_matrix, sparse_expand |
strlower
|
strlower(s); -or- strupper(s); Returns input (array of) string(s) S converted to lower/upper case letters. | |
SEE | ALSO, string,, strcase,, strtrimleft. |
strtrimleft
|
strtrimleft(s); -or- strtrimrigth(s); Returns input (array of) string(s) S without leading or trailing blanks. | |
SEE |
ALSO,
strlower,,
strupper,,
string,,
strtrim. |
strtrimright
|
strtrimright | |
SEE | strtrimleft |
strupper
|
strupper | |
SEE | strlower |
swap
|
swap, a, b; Exchanges the contents of variables A and B without requiring any temporary copy. The result of the call is identical to: tmp = a; a = b; b = tmp; which makes a copy of A and then a copy of B. Another possibility which avoids any copy of A nor B is: local tmp; eq_nocopy, tmp, a; eq_nocopy, a, b; eq_nocopy, b, tmp; | |
SEE ALSO: | eq_nocopy, unref |
symbol_exists
|
symbol_exists(name) Check if variable/function named NAME exists. This routine can be used prior to symbol_def to check existence of a symbol since symbol_def raise an error for non-existing symbol. | |
SEE |
ALSO,
symbol_def,,
symbol_names,,
symbol_set.*/ |
symbol_info
|
symbol_info, flags; -or- symbol_info, names; -or- symbol_info; Print out some information about Yorick's symbols. FLAGS is a scalar integer used to select symbol types (as in symbol_names). NAMES is an array of symbol names. If argument is omitted or undefined, all defined array symbols get selected (as with FLAGS=3). | |
SEE ALSO: | mem_info, symbol_def, symbol_names |
symbol_names
|
symbol_names() -or- symbol_names(flags) Return an array of strings with the names of all symbols of given type(s) found in global symbol table. To select the type of symbol, FLAGS is be the bitwise-or of one or more of the following bits: 1 - basic array symbols 2 - structure instance symbols 4 - range symbols 8 - nil symbols (i.e. symbols undefined at current scope level) 16 - interpreted function symbols 32 - builtin function symbols 64 - structure definition symbols 128 - file stream symbols 256 - opaque symbols 512 - list objects 1024 - hash-table objects 2048 - auto-loaded functions The special value FLAGS=-1 can be used to get all names found in global symbol table. The default (if FLAGS is nil or omitted) is to return the names of all symbols but the nil ones. Beware that lists, hash tables and auto-loaded functions are also opaque symbols. | |
SEE |
ALSO,
symbol_def,,
symbol_exists,,
symbol_info,, symbol_set.*/ |
symlink_to_name
|
symlink_to_name | |
SEE | symlink_to_variable |
symlink_to_variable
|
lnk = symlink_to_variable(var) -or- lnk = symlink_to_name(varname) -or- is_symlink(lnk) -or- name_of_symlink(lnk) -or- value_of_symlink(lnk) The call symlink_to_variable(var) creates a symbolic link to variable VAR. The call symlink_to_name(varname) creates a symbolic link to variable whose name is VARNAME. When the link object LNK is used in an 'eval' context or a 'get member' context (see examples below), LNK gets replaced 'on the fly' by the symbol which is actually stored into the corresponding Yorick's variable. Therefore LNK adds no additional reference to the variable which only has to exist when LNK is later used. This functionality can be used to implement 'virtual' methods for pseudo-object in Yorick (using hash tables). For instance: > lnk = symlink_to_variable(foo); // variable foo does not yet exists > lnk = symlink_to_name("foo"); // same link, using a name > func foo(x) { return 2*x; } > lnk(9) 18 > func foo(x) { return 3*x; } > lnk(9) 27 > z = array(complex, 10, 4); > lnk = symlink_to_variable(z); > info, lnk.re; array(double,10,4) The function is_symlink(LNK) check whether LNK is a symbolic link. The function name_of_symlink(LNK) returns the name of the variable linked by LNK. The function value_of_symlink(LNK) returns the actual value of the variable corresponding to the symbolic link LNK. This function can be used to force the substitution in a context where it is not automatically done. For instance: > lnk = symlink_to_variable(a); > a = random(10); > avg(lnk) ERROR (*main*) avg requires numeric argument > avg(value_of_symlink(lnk)) 0.383679 > avg(a) 0.383679 | |
SEE ALSO: | h_new |
T_BUILTIN
|
T_BUILTIN | |
SEE | T_CHAR |
T_CHAR
|
identof(object) Returns type identifier of OBJECT as a long integer: 0 (T_CHAR) for an array of char('s) 1 (T_SHORT) for an array of short('s) 2 (T_INT) for an array of int('s) 3 (T_LONG) for an array of long('s) 4 (T_FLOAT) for an array of float('s) 5 (T_DOUBLE) for an array of double('s) 6 (T_COMPLEX) for an array of complex('s) 7 (T_STRING) for an array of string('s) 8 (T_POINTER) for an array of pointer('s) 9 (T_STRUCT) for a structure object 10 (T_RANGE) for a range object 11 (T_LVALUE) for a lvalue 12 (T_VOID) for a void (undefined) object 13 (T_FUNCTION) for a function array 14 (T_BUILTIN) for a builtin array 15 (T_STRUCTDEF) for a data type or structure definition 16 (T_STREAM) for a file stream 17 (T_OPAQUE) for an opaque object | |
SEE | ALSO, typeof,, structof. |
T_COMPLEX
|
T_COMPLEX | |
SEE | T_CHAR |
T_DOUBLE
|
T_DOUBLE | |
SEE | T_CHAR |
T_FLOAT
|
T_FLOAT | |
SEE | T_CHAR |
T_FUNCTION
|
T_FUNCTION | |
SEE | T_CHAR |
T_INT
|
T_INT | |
SEE | T_CHAR |
T_LONG
|
T_LONG | |
SEE | T_CHAR |
T_LVALUE
|
T_LVALUE | |
SEE | T_CHAR |
T_OPAQUE
|
T_OPAQUE | |
SEE | T_CHAR |
T_POINTER
|
T_POINTER | |
SEE | T_CHAR |
T_RANGE
|
T_RANGE | |
SEE | T_CHAR |
T_SHORT
|
T_SHORT | |
SEE | T_CHAR |
T_STREAM
|
T_STREAM | |
SEE | T_CHAR |
T_STRING
|
T_STRING | |
SEE | T_CHAR |
T_STRUCT
|
T_STRUCT | |
SEE | T_CHAR |
T_STRUCTDEF
|
T_STRUCTDEF | |
SEE | T_CHAR |
T_VOID
|
T_VOID | |
SEE | T_CHAR |
typeIDof
|
typeIDof | |
SEE | T_CHAR |
unref
|
unref(x) Returns X, destroying X in the process if it is an array (useful to deal with temporary big arrays). Written after Yorick's FAQ. | |
SEE ALSO: | eq_nocopy, swap, nrefsof |
value_of_symlink
|
value_of_symlink | |
SEE | symlink_to_variable |
window_exists
|
window_exists | |
SEE | window_select |
window_geometry
|
window_geometry() -or- window_geometry(win) Get geometry settings of the visible region of display window WIN (or current window if WIN is nil or not specified). These settings are subject to change each time the window get resized. The result is a vector of 6 doubles: [DPI, ONE_PIXEL, XBIAS, YBIAS, WIDTH, HEIGHT] where: DPI = dot-per-inch of WIN ONE_PIXEL = pixel size in NDC units XBIAS = abscissa offset in NDC units YBIAS = ordinate offset in NDC units WIDTH = width of visible region in pixels HEIGHT = height of visible region in pixels Pixel coordinates (XPIX,YPIX) run from top-left (0,0) to bottom-right (WIDTH-1,HEIGHT-1). The conversion to NDC coordinates is: XNDC = XBIAS + XPIX*ONE_PIXEL; YNDC = YBIAS - YPIX*ONE_PIXEL; If window WIN does not exists, all output values are zero. Notes: (1) The top/left margin(s) used by Gist window to display some message are not considered as part of the "visible" region. (2) An extra 0.5 pixel offset has been added to (XBIAS,YBIAS) to avoid rounding errors. | |
SEE ALSO: | window, current_window, viewport, limits |
window_list
|
window_list | |
SEE | window_select |
window_select
|
window_select(n) -or- window_exists(n) -or- window_list() The function window_select makes window number N the current one and return 1 (true); unless window number N does not exists, in which case the current window is left unchanged and 0 (false) is returned. The function window_exists returns 1 or 0 whether or not window number N exists. The function window_list returns the list of existing windows as a vector of longs or nil if no window currently exists. | |
SEE ALSO: |
window,
current_window,
redraw,
fma,
limits,
window_geometry |
yeti_convolve
|
ap = yeti_convolve(a) Convolve array A along its dimensions (all by default) by a given kernel. By default, the convolution kernel is [1,4,6,4,1]/16.0. This can be changed by using keyword KERNEL (but the kernel must have an odd number of elements). The following operation is performed (with special handling for the boundaries, see keyword BORDER) along the direction(s) of interest: | ____ | \ | AP(i)= \ KERNEL(j+W) * A(i + j*SCALE) | / | /___ | -W <= j <= +W | where numberof(KERNEL)=2*W+1. Except for the SCALE factor, AP is mostly a convolution of A by array KERNEL along the direction of interest. Keyword WHICH can be used to specify the dimension(s) of interest; by default, all dimensions get convolved. As for indices, elements in WHICH less than 1 is taken as relative to the final dimension of the array. You may specify repeated convolution along some dimensions by using them several times in array WHICH (see keyword COUNT). Keyword BORDER can be used to set the handling of boundary conditions: BORDER=0 Extrapolate missing values by the left/rightmost ones (this is the default behaviour). BORDER=1 Extrapolate missing left values by zero and missing right values by the rightmost one. BORDER=2 Extrapolate missing left values by the leftmost one and missing right values by zero. BORDER=3 Extrapolate missing left/right values by zero. BORDER=4 Use periodic conditions. BORDER>4 or BORDER<0 Do not extrapolate missing values but normalize convolution product by sum of kernel weights taken into account (assuming they are all positive). By default, SCALE=1 which corresponds to a simple convolution. An other value can be used thanks to keyword SCALE (e.g. for the wavelet "a trou" method). The value of SCALE must be a positive integer. Keyword COUNT can be used to augment the amount of smoothing: COUNT (default COUNT=1) is the number of convolution passes. It is better (i.e. faster) to use only one pass with appropriate convolution kernel (see keyword KERNEL). | |
SEE | ALSO, yeti_wavelet. |
YETI_HOME
|
YETI_HOME | |
SEE | YETI_VERSION |
yeti_init
|
yeti_init | |
SEE | YETI_VERSION |
YETI_VERSION
|
YETI_HOME the directory where Yeti is installed -or- YETI_VERSION version of current Yeti interperter -or- yeti_init; -or- yeti_init(); YETI_VERSION and YETI_HOME are global variables predefined by Yeti to store its version number (as "MAJOR.MINOR.MICRO") and installation directory (e.g. "/usr/local/lib/yeti-VERSION"). The function yeti_init can be used to restore the values of YETI_VERSION and YETI_HOME. When called as a function, yeti_init() returns Yeti version as a string in the form "MAJOR.MINOR.MICRO". If Yeti is loaded as a plugin, YETI_HOME is left undefined and no path initialization is performed. Otherwise, the first time yeti_init is called (this is automatically done at Yeti startup), it set the default path list for Yeti applications. A convenient way to check if your script is parsed by Yeti is to do: if (is_func(yeti_init) == 2) { // we are in Yeti ... } else { // not in Yeti ... } | |
SEE ALSO: |
Y_LAUNCH,
Y_HOME,
Y_SITE,
Y_VERSION,
get_path, set_path |
yeti_wavelet
|
cube = yeti_wavelet(a, order) Compute the "a trou" wavelet transform of A. The result is such that: CUBE(.., i) = S_i - S_(i+1) where: S_1 = A S_(i+1) = yeti_convolve(S_i, SCALE=2^(i-1)) As a consequence: CUBE(..,sum) = A; | |
SEE | ALSO, yeti_convolve. |