*This webinar was presented by Jason Lillywhite in August 2014. Below is a brief summary and video recording of the presentation. You can also download materials used during the presentation by clicking on the link(s) at the end of the article.*

In this webinar, we explored using arrays in GoldSim. In many systems, it is beneficial to create and manipulate elements that represent collections of data rather than individual items. In GoldSim, vectors and matrices are used for collections of data, and vectors and matrices are each a type of array. Examples of collections of items or values include the number of individuals in a population by age and the average stream flow for each month of the year. In GoldSim, arrays are defined relative to a particular set of array labels. The labels are used to reference the items in the array and to display the items in the array. A vector is an array with only one value column, and a matrix is an array with more than one value column. With an array, a large number of elements, each representing an individual item or value, can be replaced with one element which represents the entire collection of items or values.

Arrays are useful in any model which deals with a collection of items or values. In addition to providing a data storage format for collections, arrays can also be manipulated in equations and used in/with built-in functions. Using a series of example elements and simple yet realistic models, we will walk through the nuances of using arrays in GoldSim starting at the fundamental level to help you learn to implement arrays in your own projects. The array-related topics will include:

- Basic array creation including index set and index label creation;
- Basic array manipulation and mathematical operations;
- Vector and matrix functions that are built into GoldSim like vinterp() and vindex();
- Using script elements to loop over arrays;
- Accessing array items or values by index; and
- Vector and matrix constructors.

The material presented in this webinar is useful for all systems modeling applications which benefit from the ability to represent a collection of items or values by a single element rather than with many elements.

Download the video and model file used during the presentation:

Here is a listing of built in vector functions in GoldSim:

Function |
Command |

Constructor | vector( , ) |

Item access | getitem(v, r) |

Row access | getrow(v, r) |

Length | getrowcount(v) |

Sum | sumv(v) |

Product | prodv(v) |

Mean | meanv(v) |

Standard deviation | sdv(v) |

Minimum | minv(v) |

Maximum | maxv(v) |

Sort ascending | sort123(v) |

Sort descending | sort321(v) |

Minimum ordinal | rowmin(v) |

Maximum ordinal | rowmax(v) |

Dot product | dot(v, v) |

Vector multiplication | vvmatrix(v, v) |

Here is a list of built-in matrix functions:

Function |
Command |

Constructor | matrix( , ) |

Item access | getitem(m, r, c) |

Row access | getrow(m, r) |

Column access | getcolumn(m, c) |

Length | getrowcount(m) |

Width | getcolumncount(m) |

Sum items each row | sumr(m) |

Product items each row | prodr(m) |

Mean items each row | meanr(m) |

Standard deviation (e.r.) | sdv(m) |

Minimum each row | minv(m) |

Maximum each row | maxv(m) |

Sum items each column | sumc(m) |

Product items each column | prodc(m) |

Mean items each column | meanc(m) |

Standard deviation (e.c.) | sdc(m) |

Minimum each column | minc(m) |

Maximum each column | maxc(m) |

Matrix transpose | trans(m) |

Matrix inverse | inv(m) |

Minimum (term-by-term) | min(m, m) |

Maximum (term-by-term) | max(m, m) |

Dot product | dot(v, v) |

Matrix multiplication | mult(m, m) |

## Comments