Generate a Datastore for binary data?
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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
0 Kommentare
Antworten (2)
Rick Amos
am 17 Okt. 2017
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.
0 Kommentare
dpb
am 13 Okt. 2017
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
0 Kommentare
Siehe auch
Kategorien
Mehr zu Large Files and Big Data finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!