Programmer Guide/Command Reference/EVAL/select: Difference between revisions

From STX Wiki
Jump to navigationJump to search
No edit summary
No edit summary
Line 4: Line 4:
:;<var>x</var>: condition vector; must be a vector!
:;<var>x</var>: condition vector; must be a vector!
:;<var>t</var>: threshold
:;<var>t</var>: threshold
:;<var>yl</var>: result if <code>''x''[''i]'' <= ''t''{[''i'']}
:;<var>yl</var>: result if <code>''x''[''i]'' <= ''t''{[''i'']}</code>
:;<var>yh</var>: result if <code>''x''[''i]'' > ''t''{[''i'']}
:;<var>yh</var>: result if <code>''x''[''i]'' > ''t''{[''i'']}</code>
::''t'', ''yl'' and ''yh'' must be numbers or vectors with the same length as ''x''
:Note: ''t'', ''yl'' and ''yh'' must be numbers or vectors with the same length as ''x''
;Result: A vector ''r'' with ...
;Result: A vector ''r'' with ...
::<code>''r''[i] = ''yl''{[''i'']}</code> if ''x''[''i]'' <= ''t''{[''i'']} and  
::<code>''r''[i] = ''yl''{[''i'']}</code> if ''x''[''i]'' <= ''t''{[''i'']}</code> and  
::<code>''r''[i] = ''yh''{[''i'']}</code> if ''x''[''i]'' > ''t''{[''i'']}
::<code>''r''[i] = ''yh''{[''i'']}</code> if ''x''[''i]'' > ''t''{[''i'']}</code>
:The result r has the same length as ''x''.
:The result r has the same length as ''x''.


Line 16: Line 16:
Example:
Example:
<pre>
<pre>
#a := eval vv(1,2,3,4,5)
#a := eval vv(1,2,3,4,5,4,3,2,1)
#b := eval vmcol($#a, vv(5,4,3,2,1))
              0 1 2 3 4 5 6 7 8
#c := vsubc($#a,0,3)
#b := eval fill(9,0,1)
// -> vector: $#c = { 1 , 2 }
#c := eval select($#a,3,0,$#a)
#d := eval vsubc($#a,2,0,5,$#b)
// -> $#c = { 0 , 0 , 0 , 4 , 5 , 4 , 0 , 0 , 0 }  
// -> matrix: $#d[*,0] = { 2 , 3 , 4 }, $#d[*,1] = { 4 , 3 , 2 }
#d := eval select($#a, $#b , $#b , $#a)
#e := eval vsubc($#a,7,2,4)
// -> $#d = { 1 , 2 , 3 , 4 , 5 , 5 , 6 , 7 , 8 }
// -> vector: $#e = { 1 , 2 , 4 , 5 }
#e := eval select($#b%2, 0, $#b, -1)
// -> $#d = { 0 , -1 , 2 , -1 , 4 , -1 , 6 , -1 , 8 }
</pre>
</pre>


[[Programmer_Guide/Command_Reference/EVAL#Functions|<function list>]]
[[Programmer_Guide/Command_Reference/EVAL#Functions|<function list>]]

Revision as of 12:22, 6 April 2011

Conditional merge of selected elements of two vectors and/or scalars.

Usage
select(x, t, yl, yh)
x
condition vector; must be a vector!
t
threshold
yl
result if x[i] <= t{[i]}
yh
result if x[i] > t{[i]}
Note: t, yl and yh must be numbers or vectors with the same length as x
Result
A vector r with ...
r[i] = yl{[i]} if x[i] <= t{[i]} and
r[i] = yh{[i]} if x[i] > t{[i]}
The result r has the same length as x.
See also
vsubn, vsubc, vv

Example:

#a := eval vv(1,2,3,4,5,4,3,2,1)
              0 1 2 3 4 5 6 7 8
#b := eval fill(9,0,1)
#c := eval select($#a,3,0,$#a)
// -> $#c = { 0 , 0 , 0 , 4 , 5 , 4 , 0 , 0 , 0 } 
#d := eval select($#a, $#b , $#b , $#a)
// -> $#d = { 1 , 2 , 3 , 4 , 5 , 5 , 6 , 7 , 8 }
#e := eval select($#b%2, 0, $#b, -1)
// -> $#d = { 0 , -1 , 2 , -1 , 4 , -1 , 6 , -1 , 8 }

<function list>

Navigation menu

Personal tools