Generate a Datastore for binary data?

12 次查看(过去 30 天)
DK
DK 2017-10-13
回答: Rick Amos 2017-10-17
I went to the Matlab expo in Silverstone last week and quite a few of the demonstrations made use of the datastore function for processing large data files.
From what I could tell however, these examples all seemed to use CSV files.
Is there anyway to do this with binary data? We almost exclusively store data using float32 binary data format. I've typically read blocks in using fread but I'd like to streamline this if possible.
I tried making using fileDatastore to use my own read function, but this hung the program and I'm assuming this was due to the function reading the whole file in.
fds = fileDatastore(filename,'ReadFcn',@testfcn);
function output = testfcn(filename)
fid = fopen(filename,'r');
fread(fid,'float32');
fclose(fid);
end
So is there anything I can do? I really want to take advantage of things like tall arrays and the plots which increase in resolution as the data is read.
Thank you

回答(2 个)

Rick Amos
Rick Amos 2017-10-17
As of R2017b, MATLAB now allows you to write custom datastores. This will allow you to create datastores that handle large binary files, without requiring to read entire files in one go.
See the documentation page for Develop Custom Datastore for more details.

dpb
dpb 2017-10-13
I've not used it much but have read some of the doc...see <What is a datastore> for an overview of what can use; there's a table at the end. It appears you would have two choices -- either a .mat file with key values that KeyValueDatastore will operate with or a custom file format for which you supply the read function with FileDatastore .
Perhaps with stream data, what you're really looking for is memmapfile

类别

Help CenterFile Exchange 中查找有关 Large Files and Big Data 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by