Generate a Datastore for binary data?
6 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(2 个)
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.
0 个评论
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
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Text Files 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!