Tôi có một tệp nhị phân khổng lồ có bản ghi có độ chính xác nhiều như {'Double', 'Double', 'Int32', 'Int8', 'Char'}. Tôi đã sử dụng memmapfile để đọc dữ liệu nhưng nó rất chậm để đọc dữ liệu. Có cách nào để đọc toàn bộ tập tin thông qua fread?Đọc nhiều tập tin nhị phân chính xác thông qua fread trong Matlab
5
A
Trả lời
7
Bạn có thể sử dụng 'skip'
tùy chọn của FREAD chức năng cũng như FSEEK để đọc các hồ sơ một "cột" at-a-thời gian:
%# type and size in byte of the record fields
recordType = {'double' 'double' 'int32' 'int8' 'char'};
recordLen = [8 8 4 1 1];
R = cell(1,numel(recordType));
%# read column-by-column
fid = fopen('file.bin','rb');
for i=1:numel(recordType)
%# seek to the first field of the first record
fseek(fid, sum(recordLen(1:i-1)), 'bof');
%# % read column with specified format, skipping required number of bytes
R{i} = fread(fid, Inf, ['*' recordType{i}], sum(recordLen)-recordLen(i));
end
fclose(fid);
Mã này nên làm việc cho bất cứ hồ sơ nhị phân nộp nói chung , bạn chỉ cần xác định kiểu dữ liệu và độ dài byte của trường bản ghi. Kết quả sẽ được trả về trong một mảng ô có chứa các cột.
Các vấn đề liên quan
- 1. C đọc tập tin nhị phân
- 2. Tập lệnh Bash - Đọc tập tin nhị phân
- 3. Đọc tập tin nhị phân thành một cấu trúc (C++)
- 4. Tại sao MATLAB không đọc thành công trong tệp nhị phân?
- 5. tập tin nhị phân để chuỗi
- 6. Viết tập tin nhị phân trong python để được đọc bởi C
- 7. Python tập tin iterator qua một tập tin nhị phân với thành ngữ mới hơn
- 8. Trực tiếp đọc tập tin nhị phân lớn trong C# w/out sao chép
- 9. Đọc/Viết Tệp nhị phân
- 10. đọc toàn bộ tập tin nhị phân thành một mảng trong single gọi C++
- 11. đọc tập tin txt qua javascript của khách hàng
- 12. Tôi có thể đọc dữ liệu nhị phân đúng cách thông qua XDomainRequest không?
- 13. tập tin với phần mở rộng sql xác định là nhị phân trong Mercurial
- 14. Linux: Chạy nhị phân trong tập lệnh
- 15. C# - Trình đọc nhị phân trong Big Endian?
- 16. Ruby: Làm thế nào để xác định xem tập tin được đọc là nhị phân hay văn bản
- 17. Diff Một thư mục đệ quy, bỏ qua tất cả các tập tin nhị phân:
- 18. Đọc tệp nhị phân thành cấu trúc
- 19. Làm thế nào để sử dụng các hàm fread và fwrite để đọc và ghi các tệp nhị phân?
- 20. Đọc một tệp nhị phân với python
- 21. Đọc một tập tin từ nhiều chủ đề trong python
- 22. Sử dụng clearvars chính xác trong MATLAB
- 23. đọc tập tin trong classpath
- 24. Viết utf16 vào tập tin ở chế độ nhị phân
- 25. suối lớn tập tin nhị phân với urllib2 nộp
- 26. File nhị phân I/O
- 27. Phân tích tệp nhị phân trong Ruby
- 28. Echo chuỗi chính xác trong tập tin batch của Windows?
- 29. Bash: viết số nguyên đến tập tin nhị phân
- 30. Đọc tập tin plist
Tuyệt vời. Cảm ơn bạn đã giúp đỡ. Nó hoạt động hoàn hảo. – shunyo
@shunyo: vui vì tôi có thể giúp. Bạn đã so sánh điều này với giải pháp của bạn bằng cách sử dụng 'memmapfile' về hiệu suất? – Amro
Vâng tôi đã làm. Nó cải thiện gấp 5 lần về mặt tốc độ. Một giải pháp rất tiện dụng, của bạn. – shunyo