## Documentation |

Reformat neural data back from GPU

`X = gpu2nndata(Y,Q)X = gpu2nndata(Y)X = gpu2nndata(Y,Q,N,TS)`

Training and simulation of neural networks require that matrices
be transposed. But they do not require (although they are more efficient
with) padding of column length so that each column is memory aligned.
This function copies data back from the current GPU and reverses
this transform. It can be used on data formatted with `nndata2gpu` or
on the results of network simulation.

`X = gpu2nndata(Y,Q)` copies the `QQ`-by-`N` gpuArray `Y` into
RAM, takes the first `Q` rows and transposes the
result to get an `N`-by-`Q` matrix
representing `Q` `N`-element vectors.

`X = gpu2nndata(Y)` calculates `Q` as
the index of the last row in `Y` that is not all `NaN` values
(those rows were added to pad `Y` for efficient GPU
computation by `nndata2gpu`). `Y` is
then transformed as before.

`X = gpu2nndata(Y,Q,N,TS)` takes a `QQ`-by-(`N*TS`)
gpuArray where `N` is a vector of signal sizes, `Q` is
the number of samples (less than or equal to the number of rows after
alignment padding `QQ`), and `TS` is
the number of time steps.

The gpuArray `Y` is copied back into RAM, the
first `Q` rows are taken, and then it is partitioned
and transposed into an `M`-by-`TS` cell
array, where `M` is the number of elements in `N`.
Each `Y{i,ts}` is an `N(i)`-by-`Q` matrix.

Copy a matrix to the GPU and back:

x = rand(5,6) [y,q] = nndata2gpu(x) x2 = gpu2nndata(y,q)

Copy from the GPU a neural network cell array data representing four time series, each consisting of five time steps of 2-element and 3-element signals.

x = nndata([2;3],4,5) [y,q,n,ts] = nndata2gpu(x) x2 = gpu2nndata(y,q,n,ts)

Was this topic helpful?