How to efficiently create an array of libpointers?
Show older comments
Hi,
I am working on a piece of code to create a 2D array of libpointers that can be passed to a shared library. This corresponds to dividing up the memory on a device to capture data for each channel on a device:
nCaptures = 2000000;
num_samples = 64;
tic;
for ch = 1:4
for segment = 1:nCaptures
if(channelSettings(ch).enabled)
rapidBlockBuffer(ch, segment) = libpointer('int16Ptr', zeros(num_samples, 1));
[status.setDataBufferBulk(ch, segment)] = calllib('PS6000', 'ps6000SetDataBufferBulk', handle, ch - 1, ...
rapidBlockBuffer(ch, segment), num_samples, segment - 1, downSampleRatioMode);
else
rapidBlockBuffer(ch, segment) = libpointer('int16Ptr', 0);
end
end
end
toc;
On a Windows 8 64-bit PC with MATLAB 2012b, this code was running for well over 1.5 hours and hadn't completed.
Is the else condition a suitable way of maintaining the array dimensions if a channel on the device is not enabled?
Thanks,
H
2 Comments
Philip Borghesani
on 2 Oct 2013
I am not sure that creating this many libpointer objects makes sense for any application. More information on the problem you are trying to solve or the system you are trying to implement might help give perspective on alternate solutions.
Pico Technology
on 3 Oct 2013
Accepted Answer
More Answers (0)
Categories
Find more on Call C from MATLAB in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!