Write and Read Matrix Data
Use a dsp.BinaryFileReader
System object™ to read data from a binary file in a row-major format.
Write the Data
Write the matrix A
to the binary file Matdata.bin
using a dsp.BinaryFileWriter
object. The object writes the specified header followed by the data.
The header has the following format:
DataType
set todouble
.Complexity
set tofalse
.FrameSize
(number of rows in the data matrix) set to 3.NumChannels
(number of columns in the data matrix) set to 4.
A = [1 2 3 8; 4 5 6 10; 7 8 9 11]; header = struct('DataType','double',... 'Complexity',false,... 'FrameSize',3,... 'NumChannels',4); writer = dsp.BinaryFileWriter('Matdata.bin',... 'HeaderStructure',header); writer(A);
Release the writer so that the reader can access the data.
release(writer);
Read the Data
Specify the header using the HeaderStructure
property of the reader object. If the exact header is not known, you must at least specify the prototype of the header. That is, the number of fields, and the data type, size, and complexity of each field in the prototype must match with the header data written to the binary file. The dsp.BinaryFileReader
object reads the binary file Matdata.bin
until the end of file is reached. Configure the System object to read the data into 4 channels, with each channel containing 5 samples. Each loop of the iteration reads a channel (or frame) of data.
headerPrototype = struct('DataType','double',... 'Complexity',false,... 'FrameSize',5,... 'NumChannels',4); reader = dsp.BinaryFileReader('Matdata.bin',... 'HeaderStructure',headerPrototype,... 'NumChannels',4,... 'SamplesPerFrame',5); while ~isDone(reader) out = reader(); display(out) end
out = 5×4
1 2 3 8
4 5 6 10
7 8 9 11
0 0 0 0
0 0 0 0
Each frame of out
contains frames of the matrix A
, followed by zeros to complete the frame. The original matrix A
contains 4 channels with 3 samples in each channel. The reader is configured to read data into 4 channels, with each channel containing 5 samples. Because there are not enough samples to complete the frame, the reader object appends zeros at the end of each frame.
See Also
dsp.BinaryFileReader
| dsp.BinaryFileWriter