本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

read

读取数据存储中的数据

说明

示例

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

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

示例

全部折叠

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

ds = tabularTextDatastore('airlinesmall.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 = 14531797

根据示例文件 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({'street1.jpg','street2.jpg','peppers.png'}); 

创建第二个数据存储 imds2,其中包含三个图像中明亮区域的蒙板。要创建此数据存储,请首先将 imds1 的图像转换为灰度图像。然后通过将亮像素(值大于 250)映射为白像素,将暗像素映射为黑像素,将每个图像转换为二元蒙板。

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

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

imdsCombined = combine(imds1,imds2);

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

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

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

tile = imtile(dataOut);
imshow(tile)

输入参数

全部折叠

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

输出参数

全部折叠

输出数据,以表或数组形式返回,具体取决于 ds 的类型。

数据存储类型data 的数据类型说明
TabularTextDatastoreSpreadsheetDatastoreSelectedVariableNames 属性确定表的变量。
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视情况而定

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

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

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

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

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

字段名称数据存储类型说明
Filename全部Filename 是完全解析的路径,包含路径字符串、文件名和文件扩展名。对于其 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 中推出