Matlab大数据处理1:Matlab内存映射文件
来源:互联网 发布:级域名泛解析多久生效 编辑:程序博客网 时间:2024/04/19 20:07
在maltab程序中,经常需要读取一些.mat格式的数据文件,如果文件非常大,内存装不下或者加载时间过长,我们可以通过matlab提供了内存映射文件机制(memroy mapped file)[1]来解决这一问题。内存文件映射是一种内存管理方法,应用程序可以通过内存指针对磁盘上的文件进行访问,从而不需要预先将整个文件加载到内存中去。
Matlab内存映射文件的语法格式如下:
m = memmapfile(filename)
m = memmapfile(filename, prop1, value1, prop2, value2, ...)
memmapfile(filename)创建了一个默认参数的内存映射文件,而m = memmapfile(filename, prop1, value1, prop2, value2, ...)创建一个指定参数的内存映射文件,参数设置见下表1,最后一列Default表示参数默认值,其中Repeat属性中的inf表示顺序读取文件直至文件末尾,映射的内存数据可通过m.Data属性来访问。
表1. Matlab memmapfile参数列表
调用示例:
首先创建一个5000*1维的double数组并保存,gallery是一个maltab测试函数,返回给定参数的测试数组。
randData = gallery('uniformdata', [5000, 1], 0, 'double');fid = fopen('records.dat','w');fwrite(fid, randData, 'double');fclose(fid);
Example 1 创建默认内存映射文件
m = memmapfile('records.dat');
Example 2 创建指定参数的内存映射文件
设置offset、Format和Writeble属性,,注意最后得到了一个9744*1的uint32数组,总共是38976字节,加上offset刚好等于5000个double数组的总字节数。
m = memmapfile('records.dat', ... 'Offset', 1024, ... 'Format', 'uint32', ... 'Writable', true);
Type the object name to see the current settings for all properties:
m = Filename: 'd:\matlab\records.dat' Writable: true Offset: 1024 Format: 'uint32' Repeat: Inf Data: 9744x1 uint32 array
Example 3 映射对象
将record.dat文件映射成对象,该对象拥有一个4*10*8 uint32数组成员,变量名为x,,可以通过m.Data(*).x进行访问,*表示index.
m = memmapfile('records.dat', ... 'Offset', 1024, ... 'Format', {'uint32' [4 10 18] 'x'});A = m.Data(1).x;whos A Name Size Bytes Class A 4x10x18 2880 uint32 array
Example 4 映射复杂对象
复杂对象拥有model,serialno,expenses三个属性,读取1000次。
m = memmapfile('records.dat', ... 'Format', { ... 'int16' [2 2] 'model'; ... 'uint32' [1 1] 'serialno'; ... 'single' [1 3] 'expenses'}, ... 'Repeat', 1000);
[1] Matlab MemoryMapped File
- Matlab大数据处理1:Matlab内存映射文件
- matlab文件数据处理
- Matlab大数据处理2:硬盘访问.mat文件
- MATLAB 数据处理
- Matlab数据处理
- MATLAB--数据处理
- 大数据处理之道 (MATLAB 篇)
- 大数据处理之道 (MATLAB 篇)
- 大数据处理之道 (MATLAB 篇)
- Matlab—matlab进行数据处理
- 大数据处理之道 (MATLAB 篇(二))
- 大数据处理之道 (MATLAB 篇(二))
- 大数据处理之道 (MATLAB 篇(二))
- 大数据处理之道 (MATLAB 篇<三>)
- matlab 矩阵数据处理小结(1)
- Matlab数据处理(3)
- Matlab数据处理常用命令整理
- Matlab 简单的数据处理
- 关于GAE中golang的context
- UVa 10192: Vacation
- 如何去掉CodeIgniter中URL里的index.php
- HDU 3474 Necklace 单调队列
- Nutch+Hadoop集群搭建
- Matlab大数据处理1:Matlab内存映射文件
- C语言 蓝桥杯决赛排日程
- wikioi p1048 石子归并
- c++ 输出流的疑惑(待解)
- 普通类实现枚举类
- csdn博客被一个无名网站套用,不知大家是否也是这样?
- wikioi p1154 能量项链
- Uva11997 优先级队列的应用 多路合并问题
- Objective-C ,ios,iphone开发基础:在UITextField输入完以后,隐藏键盘,