主要内容

写信给映射文件

这个例子显示了如何创建三个不同的内存映射,然后写每个地图使用适当的语法。然后,它显示了如何使用您的映射数据的副本。

你可以写一个文件使用相同的MATLAB®命令你使用MATLAB的工作区中访问变量。通过访问数据财产的内存映射,映射文件的内容显示为一个数组中当前活跃的工作区。简单指数到这个数组写入数据文件。时所使用的语法编写映射内存取决于的格式数据内存映射的属性。

写入内存映射的数字数组

首先,创建一个示例文件命名records.dat,在当前文件夹。

rng (“默认”)myData =兰德([1]5000年);文件标识= fopen (“records.dat”,' w ');写入文件(文件标识,myData,“双”);文件关闭(文件标识);

映射文件作为16-bit-unsigned整数序列。使用格式名称-值对参数来指定的值类型uint16

m = memmapfile (“records.dat”,“抵消”,20岁,“格式”,“uint16”,“重复”15);

因为文件映射序列的一个类(uint16),数据是一个数字数组。

确保你有写权限的映射文件。设置可写的内存映射的属性,,真正的

m。可写= true;

创建一个矩阵X这是相同的大小数据属性,并将它写入映射文件的一部分。所有常见的MATLAB索引和数据类规则适用于赋值时通过内存映射。你指定的类,必须大得足以容纳值被分配。

X = uint16 (1:1:15);m.Data= X;

X是一个1-by-15向量的整数值从1到15。

验证新值写入到文件中。指定一个抵消值0开始读取文件的开始。指定一个重复价值35查看总共35值。使用重塑函数的值显示为一个7-by-5矩阵。

m。抵消= 0;m。重复= 35;重塑(m.Data、5、7)
ans =7 x5 uint16矩阵47739 26762 4663 16362 3197 24407 64575 16364 31612 40832 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 12673 53994 16337 46560 44024 32781 16353 24667 24572 41957

中的值X已经写入文件,records.dat

写入内存映射为标量结构

映射文件的一个地区,records.dat,300 - 8矩阵的类型uint16可以引用的字段名,x,紧随其后的是200 - 5矩阵的类型字段名称,可以参考,y。指定映射文件的写权限使用可写的名称-值对的论点。

m = memmapfile (“records.dat”,“格式”,{“uint16”(300 8)“x”;“双”200年[5]“y”},“重复”, 1可写的,真正的);

查看数据财产

m.Data
ans =结构体字段:x: [300×8 uint16] y: [200 x5双)

数据是一个标量结构数组。这是因为该文件,records.dat包含多个数据类型的映射,不重复。

替换矩阵,x,一个矩阵的问题。

m.Data。x= ones(300,8,“uint16”);

写入内存映射Nonscalar结构

地图文件,records.dat作为一个25-by-8矩阵的类型uint16其次是15-by-5矩阵的类型。重复模式的20倍。

m = memmapfile (“records.dat”,“格式”,{“uint16”(5 - 4)“x”;“双”[15 5]“y”},“重复”,20岁,可写的,真正的);

查看数据财产

m.Data
ans =20×1结构体数组字段:x y

数据是一个nonscalar结构数组,因为文件映射多个数据类型的重复序列。

写所有的数组字段命名x在12日的元素数据

m.Data(12)方式= ones(5,4,“uint16”);

12日的元素数据写价值50行3到5的所有元素,x

m.Data(12)方式(3:5,1:结束)= 50;

视图,x12的元素数据

m.Data(12)方式
ans =5 x4 uint16矩阵1 1 1 1 1 1 1 1 50 50 50 50 50 50 50 50 50 50 50 50

语法编写映射文件

时所使用的语法编写映射内存取决于的格式数据内存映射的属性。查看内存映射的属性通过键入的名称memmapfile对象。

此表显示了写作的语法一个矩阵,X内存映射,

的格式数据财产 语法编写映射文件

数字数组

例子:15 x1 uint16数组

m.Data= X;

标量(1×1)结构数组

例子:

1 x1结构体数组字段:x y

m.Data。字段名= X;

字段名是一个字段的名称。

Nonscalar (n1)结构数组

例子:

20 x1结构体数组字段:x y

m.Data (k)。字段名= X;

k是一个标量指数和字段名是一个字段的名称。

的类X和元素的数量X必须匹配的吗数据属性或字段的数据属性被访问。你不能改变的尺寸数据财产后,您已经创建了使用的内存映射memmapfile函数。例如,您不能减少或扩大一个数组的大小通过删除或添加一行从映射数组,m.Data

如果你整个文件,然后添加映射到该文件构建地图后,附加数据不包括在映射的区域。如果你需要修改的尺寸数据映射到内存映射,,您必须修改格式重复属性或重新创建使用memmapfile函数。

请注意

成功修改映射文件,您必须拥有该文件的写权限。如果你没有写权限,试图写入文件生成一个错误,即使可写的属性是真正的

使用映射数据的副本

这部分的例子展示了如何使用您的映射数据的副本。变量中的数据d文件映射的数据的一个副本m.Data (2)。因为它是一种复制,修改数组中的数据d不修改文件中包含的数据。

创建一个示例文件命名double.dat

myData =兰德([1]5000年)* 100;文件标识= fopen (“double.dat”,' w ');写入文件(文件标识,myData,“双”);文件关闭(文件标识);

映射文件作为一系列的矩阵。

m = memmapfile (“double.dat”,“格式”,{“双”5 [5]“x”;“双”5 [4]“y”});

视图中的值m.Data(2)方式

m.Data(2)方式
ans =5×595.0545 54.7696 15.6697 97.2605 85.0706 53.2131 60.9054 5.8124 60.5319 25.6792 24.7686 86.3135 33.9707 33.8236 28.5496 43.7276 38.0696 81.7176 92.7984 77.9947 66.9088 74.8956 37.7548 89.8425 70.1395

复制的内容m.Data的变量,d

d = m.Data;

编写所有字段命名为零x在复制。

d(2)方式(1:5,1:5)= 0;

验证0被写入d(2)方式

d(2)方式
ans =5×50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

验证映射文件中的数据是没有改变。

m.Data(2)方式
ans =5×595.0545 54.7696 15.6697 97.2605 85.0706 53.2131 60.9054 5.8124 60.5319 25.6792 24.7686 86.3135 33.9707 33.8236 28.5496 43.7276 38.0696 81.7176 92.7984 77.9947 66.9088 74.8956 37.7548 89.8425 70.1395

另请参阅

相关的话题