substute

Purpose

Substitutes new values for old values in a matrix, depending on the outcome of a logical expression.

Format

y = substute(x, e, v)
Parameters:
  • x (NxK matrix) – the data to be changed

  • e (LxM matrix) – ExE conformable with x containing 1’s and 0’s.

  • v (PxQ matrix) – ExE conformable with x and e, containing the values to be substituted for the original values of x when the corresponding element of e is 1.

Returns:

y (max(N,L,P) by max(K,M,Q) matrix) – data in x with values in v substituted based on logical expression in x

Examples

Example 1

Set all elements between 0 and 2.25e-16 equal to 0.

// Create example vector
x = { 3.8e-21,
          1.0,
          3.5,
      2.7e-18,
          0.5,
          3.0,
      1.1e-16,
          0.5,
          2.2,
          4.0 };

// Substitute all values less than 2.2e-16 with a zero
x = substute(x, x .< 2.25e-16, 0);

After the code above, x is equal to:

0.0
1.0
3.5
0.0
0.5
3.0
0.0
0.5
2.2
4.0

Example 2

// Create a matrix with character elements
// in the first column
x = { Y 55 30,
      N 57 18,
      Y 24 3,
      N 63 38,
      Y 55 32,
      N 37 11 };

// Create a rows(x) by 1 vector with a '1' for each row
// that:
//   1) The first element is a Y
//   2) The second element is greater than or equal to 55
//   3) The third element is greater than or equal to 30
// If the row does not meet ALL of these conditions a 0 will
// be returned.
e = (x[., 1] .$== "Y") .and (x[., 2] .>= 55) .and (x[., 3] .>= 30);

// Substitute an 'R' for the first element in every row that
// meets the conditions specified in the assignment to 'e'
x[., 1] = substute(x[., 1], e, "R");

The vector e is equal to:

1
0
0
0
1
0

Here is what x looks like after substitution:

R 55 30
N 57 18
Y 24  3
N 63 38
R 55 32
N 37 11

Remarks

The e matrix is usually the result of an expression or set of expressions using dot conditional and Boolean operators.

Source

datatran.src