Main Content

read

读取数据存储中的数据

说明

data = read(ds) 返回数据存储中的数据。对 read 函数的后续调用继续从上一调用的端点读取。

示例

[data,info] = read(ds) 还返回有关 info 中提取的数据的信息,包括元数据。

示例

全部折叠

根据示例文件 airlinesmall_subset.csv(包含表格数据)创建一个数据存储。

ds = tabularTextDatastore("airlinesmall_subset.csv","TreatAsMissing","NA","MissingValue",0);

修改 SelectedVariableNames 属性以指定相关变量。

ds.SelectedVariableNames = ["DepTime","ArrTime","ActualElapsedTime"];

当存在可从数据存储中读取的数据时,一次读取一个数据块并分析该数据。在此示例中,求实际已用时间之和。

sumElapsedTime = 0;
while hasdata(ds)
    T = read(ds);
    sumElapsedTime = sumElapsedTime + sum(T.ActualElapsedTime);
end

查看实际已用时间的和。

sumElapsedTime
sumElapsedTime = 
154759

根据示例文件 mapredout.matmapreduce 函数的输出文件)创建一个数据存储。

ds = datastore('mapredout.mat');

读取数据存储中的部分数据。

T = read(ds)
T=1×2 table
     Key        Value  
    ______    _________

    {'AA'}    {[14930]}

通过更改数据存储的 ReadSize 属性更改一次读取的键-值对组数。

ds.ReadSize = 5;

读取数据存储中随后的五个键-值对组。

T = read(ds)
T=5×2 table
     Key        Value  
    ______    _________

    {'AS'}    {[ 2910]}
    {'CO'}    {[ 8138]}
    {'DL'}    {[16578]}
    {'EA'}    {[  920]}
    {'HP'}    {[ 3660]}

创建一个数据存储,用于维护基础数据存储的图像对之间的奇偶校验。例如,创建两个单独的图像数据存储,然后创建一个从这两个图像数据存储中读取对应图像的合并数据存储。

创建一个表示三个图像的集合的图像数据存储 imds1

imds1 = imageDatastore({'peppers.png','street1.jpg','street2.jpg'}); 

创建第二个数据存储 imds2,其中包含三个图像中明亮区域的蒙板。要创建此数据存储,请首先将 imds1 的图像转换为灰度图像。然后通过执行阈值处理将每个图像转换为二值掩膜。在此示例中,阈值操作将高于阈值 (250) 的像素映射为白色,将所有其他像素映射为黑色。

imds2 = transform(imds1,@(x) im2gray(x)>250);

基于 imds1imds2 创建一个合并数据存储。

imdsCombined = combine(imds1,imds2);

从合并数据存储中读取第一个数据子集。输出是一个 1×2 元胞数组。两列表示分别从两个基础数据存储 imds1imds2 读取的第一个数据子集。

dataOut = read(imdsCombined)
dataOut=1×2 cell array
    {384x512x3 uint8}    {384x512 logical}

将从合并数据存储中读取的数据显示为一对分块图。

tile = imtile(dataOut);
imshow(tile)

Figure contains an axes object. The hidden axes object contains an object of type image.

再次从合并数据存储中读取。对 read 函数的此调用继续从上一调用的端点读取。

dataOut = read(imdsCombined)
dataOut=1×2 cell array
    {480x640x3 uint8}    {480x640 logical}

显示读取的数据。

tile = imtile(dataOut);
imshow(tile)

Figure contains an axes object. The hidden axes object contains an object of type image.

输入参数

全部折叠

输入数据存储。您可以将这些数据存储用作 read 方法的输入。

输出参量

全部折叠

输出数据,以表、时间表或数组形式返回,具体取决于输入 ds 的类型。如果在与导入配置结合使用的对 read 函数的特定调用中读取的数据量不返回值,则 data 输出可以为空。

数据存储类型data 的数据类型描述
TabularTextDatastoreSpreadsheetDatastoreParquetDatastore表或时间表SelectedVariableNames 属性确定表的变量。OutputType 属性确定输出是表还是时间表。
ImageDatastore整数数组

整数数组的维度取决于图像的类型:

  • 对灰度图像而言,data 是 m×n 数组。

  • 对真彩色图像而言,data 是 m×n×3 数组。

  • 对 CMYK Tiff 图像而言,data 是 m×n×4 数组。

如果 ReadSize 属性大于 1,则 data 是对应于每个图像的图像数据元胞数组。read 函数支持 imread 函数所支持的所有图像类型。有关支持的图像类型的详细信息,请参阅 imread

KeyValueDatastore表变量名称是 KeyValue
FileDatastore视情况而定输出与 'ReadFcn' 值指定的自定义读取函数所返回的输出相同。
TransformedDatastore视情况而定输出与用于创建 TransformedDatastoretransform 方法中指定的变换函数 @fcn 的输出相同。
CombinedDatastore视情况而定

包含从对应基础数据存储中读取的输出的水平串联。

SequentialDatastore视情况而定包含从当前基础数据存储中按顺序读取的输出。

有关读取的数据的信息,以结构体数组或结构体数组元胞数组的形式返回。

  • 对于 MATLAB 数据存储和 TransformedDatastoreinfo 是一个结构体数组,其中包含有关数据存储的信息字段。

  • 对于 CombinedDatastoreinfo 是一个由结构体数组构成的元胞数组。元胞数组的每个元素都包含一个结构体,该结构体包含对应基础数据存储的相关字段。

  • 对于 SequentialDatastoreinfo 的数据类型和格式与当前基础数据存储相同。

结构体数组中的信息取决于输入数据存储的类型。结构体数组可能包含以下字段。

字段名称数据存储类型描述
FilenameImageDatastoreSpreadsheetDatastoreTabularTextDatastoreFileDatastoreKeyValueDatastoreTallDatastoreFilename 是完全解析的路径,包含路径字符串、文件名和文件扩展名。对于其 ReadSize 属性大于 1 的 ImageDatastore 对象,Filename 是由对应于每个图像的文件名构成的元胞数组。
FileSize

文件总大小(以字节为单位)。

对于其 ReadSize 属性大于 1 的 ImageDatastore 对象,FileSize 是由对应于每个图像的文件大小构成的向量。

对于 MAT 文件,FileSize 的值取决于数据存储的类型。

  • KeyValueDatastoreTallDatastore - FileSize 字段包含文件中键-值对组的总数。

  • FileDatastore - FileSize 字段包含以字节为单位的文件总大小。

FileType仅限 KeyValueDatastore

要读取的数据文件的类型,可以是 'mat'(对于 MAT 文件)或 'seq'(对于序列文件)。

Label仅限 ImageDatastore

图像标签名称。如果 ReadSize 属性大于 1,则 Label 是由对应于每个图像的标签名称构成的向量。如果 Labels 属性为空,则 Label 是一个空的元胞数组。

NumCharactersRead仅限 TabularTextDatastore

读取的字符数。

NumDataRows仅限 SpreadsheetDatastore

包含从每个工作表中读取的行数的向量。

Offset仅限于 KeyValueDatastoreTabularTextDatastore

读操作的起始位置,以字节为单位。对于 MAT 文件,Offset 是读取的第一个键和值的索引。

SheetNames仅限 SpreadsheetDatastore

读取的工作表的名称。

SheetNumbers仅限 SpreadsheetDatastore

与读取的工作表关联的编号。

扩展功能

版本历史记录

在 R2014b 中推出

另请参阅

| | |