## Function for appending a new value to an existing wave

Average rating
(1 vote)

```// Handy Function to append a new value to an existing 1-dimensional wave
Function AppendValue(thewave, thevalue)
Wave thewave
Variable thevalue
Redimension /N=(numpnts(thewave)+1) thewave
thewave [numpnts(thewave)] = thevalue
End```

### I get an out of bounds error

I get an out of bounds error as the index in the last line is off by one.
Better write it as

`thewave [numpnts(thewave)-1] = thevalue`

Or even as
```Function AppendValue(thewave, thevalue)
Wave thewave
Variable thevalue

variable size = DimSize(thewave,0)
Redimension /N=(size+1,-1,-1,-1) thewave
thewave [size] = thevalue
End```

That also works with multidimensional waves.

Keep in mind that this is might be slow as Redimension might need to allocate memory.

### The line thewave

The line ` thewave [size] = thevalue` will not do what you expect if you feed it a matrix wave. Might be better to write `thewave[size][0][0][0] = thevalue`

But trying to come up with a reasonable behavior for waves of any dimensionality is probably futile. What is the correct way to add one value to a matrix? Add a row and fill the first value of the row with the new value, and zeroes in the rest of the row? Fill the entire row with the new value? Add a column and then ask the same questions? And the question expands exponentially with increasing dimensionality...

John Weeks
WaveMetrics, Inc.
support@wavemetrics.com