read
读取数据存储中的数据
说明
示例
读取 TabularTextDatastore 中的数据
根据示例文件 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
读取 KeyValueDatastore 中的数据
根据示例文件 mapredout.mat
(mapreduce
函数的输出文件)创建一个数据存储。
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);
基于 imds1
和 imds2
创建一个合并数据存储。
imdsCombined = combine(imds1,imds2);
从合并数据存储中读取第一个数据子集。输出是一个 1×2 元胞数组。两列表示分别从两个基础数据存储 imds1
和 imds2
读取的第一个数据子集。
dataOut = read(imdsCombined)
dataOut=1×2 cell array
{384x512x3 uint8} {384x512 logical}
将从合并数据存储中读取的数据显示为一对分块图。
tile = imtile(dataOut); imshow(tile)
再次从合并数据存储中读取。对 read
函数的此调用继续从上一调用的端点读取。
dataOut = read(imdsCombined)
dataOut=1×2 cell array
{480x640x3 uint8} {480x640 logical}
显示读取的数据。
tile = imtile(dataOut); imshow(tile)
输入参数
ds
— 输入数据存储
数据存储
输入数据存储。您可以将这些数据存储用作 read
方法的输入。
MATLAB® 数据存储 - 使用 MATLAB
datastore
函数创建的数据存储。例如,使用ImageDatastore
为图像集合创建一个数据存储。有关完整的数据存储列表,请参阅Select Datastore for File Format or Application。自定义数据存储 - 使用自定义数据存储框架创建的数据存储。请参阅Develop Custom Datastore。
输出参量
data
— 输出数据
表 | 时间表 | 数组
输出数据,以表、时间表或数组形式返回,具体取决于输入 ds
的类型。如果在与导入配置结合使用的对 read
函数的特定调用中读取的数据量不返回值,则 data
输出可以为空。
数据存储类型 | data 的数据类型 | 描述 |
---|---|---|
TabularTextDatastore 、SpreadsheetDatastore 和 ParquetDatastore | 表或时间表 | SelectedVariableNames 属性确定表的变量。OutputType 属性确定输出是表还是时间表。 |
ImageDatastore | 整数数组 | 整数数组的维度取决于图像的类型:
如果 |
KeyValueDatastore | 表 | 表变量名称是 Key 和 Value 。 |
FileDatastore | 视情况而定 | 输出与 'ReadFcn' 值指定的自定义读取函数所返回的输出相同。 |
TransformedDatastore | 视情况而定 | 输出与用于创建 TransformedDatastore 的 transform 方法中指定的变换函数 @fcn 的输出相同。 |
CombinedDatastore | 视情况而定 | 包含从对应基础数据存储中读取的输出的水平串联。 |
SequentialDatastore | 视情况而定 | 包含从当前基础数据存储中按顺序读取的输出。 |
info
— 关于读取数据的信息
结构体数组 | 元胞数组
有关读取的数据的信息,以结构体数组或结构体数组元胞数组的形式返回。
对于 MATLAB 数据存储和
TransformedDatastore
,info
是一个结构体数组,其中包含有关数据存储的信息字段。对于
CombinedDatastore
,info
是一个由结构体数组构成的元胞数组。元胞数组的每个元素都包含一个结构体,该结构体包含对应基础数据存储的相关字段。对于
SequentialDatastore
,info
的数据类型和格式与当前基础数据存储相同。
结构体数组中的信息取决于输入数据存储的类型。结构体数组可能包含以下字段。
字段名称 | 数据存储类型 | 描述 |
---|---|---|
Filename | ImageDatastore 、SpreadsheetDatastore 、TabularTextDatastore 、FileDatastore 、KeyValueDatastore 和 TallDatastore | Filename 是完全解析的路径,包含路径字符串、文件名和文件扩展名。对于其 ReadSize 属性大于 1 的 ImageDatastore 对象,Filename 是由对应于每个图像的文件名构成的元胞数组。 |
FileSize | 文件总大小(以字节为单位)。 对于其 对于 MAT 文件,
| |
FileType | 仅限 KeyValueDatastore | 要读取的数据文件的类型,可以是 |
Label | 仅限 ImageDatastore | 图像标签名称。如果 |
NumCharactersRead | 仅限 TabularTextDatastore | 读取的字符数。 |
NumDataRows | 仅限 SpreadsheetDatastore | 包含从每个工作表中读取的行数的向量。 |
Offset | 仅限于 KeyValueDatastore 和 TabularTextDatastore | 读操作的起始位置,以字节为单位。对于 MAT 文件, |
SheetNames | 仅限 SpreadsheetDatastore | 读取的工作表的名称。 |
SheetNumbers | 仅限 SpreadsheetDatastore | 与读取的工作表关联的编号。 |
扩展功能
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
用法说明和限制:
在基于线程的环境中,您只能对以下数据存储使用
read
:ImageDatastore
对象使用
combine
或transform
从ImageDatastore
对象创建的CombinedDatastore
、SequentialDatastore
或TransformedDatastore
对象
如果您有 Parallel Computing Toolbox™,则可以对其他数据存储使用
read
。为此,请使用基于进程的并行池运行该函数,而不是使用backgroundPool
或ThreadPool
(使用ProcessPool
或ClusterPool
)。read
在基于线程的环境中不支持以下图像格式:分层数据格式 (HDF)
SVS
TIFF
有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
版本历史记录
在 R2014b 中推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)