You wrote the data in step 4 as 16-bit integers so you use the same data type here. While performing reads and writes, your process continues to run. You did not need to stop the processor to get the data or send the data, unlike using most debuggers and breakpoints in your code. You placed your data in memory across an RTDX channel, the processor used the data, and you read the data from memory across an RTDX channel, without stopping the processor. You can read data into cell arrays, rather than into simple double-precision variables.
Cell array outdata contains three messages.
You can look at both matrices in outdata by dereferencing the cell array again. For a change, read a message from the queue into a column vector. To check your progress, see how many messages remain in the queue. You have read eight messages from the queue so 12 should remain. Filling the matrix required two messages worth of data.