Specify per-channel allocated memory


BufferingConfig is a two-element vector that specifies the per-channel allocated memory. The first element of the vector specifies the block size, while the second element of the vector specifies the number of blocks. The total allocated memory (in bytes) is given by

(block size).(number of blocks).(number of channels).(native data type)

You can determine the native data type with daqhwinfo.

You can allocate memory automatically or manually. If BufferingMode is Auto, the BufferingConfig values are automatically set by the engine. If BufferingMode is Manual, then you must manually set the BufferingConfig values. If you change the BufferingConfig values, BufferingMode is automatically set to Manual.

When memory is automatically allocated by the engine, the block-size value depends on the sampling rate and is typically a binary number. The number of blocks is initially set to a value of 30 but can dynamically increase to accommodate the memory requirements. In most cases, the number of blocks used results in a per-channel memory that is somewhat greater than the SamplesPerTrigger value. When you manually allocate memory, the number of blocks is not dynamic and care must be taken to ensure there is sufficient memory to store the acquired data. If the number of samples acquired or queued exceeds the allocated memory, then an error is returned.

You can easily determine the memory allocated and available memory for each device object with the daqmem function.



AI, AO, common to all channels



Data type

Two-element vector of doubles

Read-only when running



The default value is determined by the engine, and is based on the number of channels contained by the device object and the sampling rate. The BufferingMode value determines whether the values are automatically updated as data is acquired. For analog output objects, the default number of blocks is two.

    Note:   If you change the BufferingConfig property for an analog output object, all previously queued output data will get discarded.


Create the analog input object ai for a sound card and add two channels to it.

ai = analoginput('winsound');

The block size and number of blocks are given by BufferingConfig, while the native data type for the sound card is given by daqhwinfo.

ans =
   512    30
out = daqhwinfo(ai);
ans =

With this information, the total allocated memory is calculated to be 61,440 bytes. This number is stored by daqmem.

out = daqmem(ai);
ans =

The allocated memory is more than sufficient to store 8000 two-byte samples for two channels. If more memory was required, then the number of blocks would dynamically grow because BufferingMode is set to Auto.

Was this topic helpful?