arrayDatastore
内存中数据的数据存储
说明
使用 ArrayDatastore 对象管理基于内存中数据创建的数据存储。您可以使用 arrayDatastore 函数创建 ArrayDatastore 对象,指定其属性,然后使用对象函数导入和处理数据。
创建对象
描述
输入参量
输入数组,指定为矩阵。
属性
ArrayDatastore 属性描述数据存储对象中内存数据的格式,并控制如何从数据存储中读取数据。创建数据存储对象时,可以使用名称-值对组参量指定 ArrayDatastore 属性的值。要在创建对象后查看或修改属性,请使用圆点表示法。
在调用 read 函数时要读取的数据量,指定为由 'ReadSize' 和正整数组成的以逗号分隔的对组。每次调用 read 最多读取 ReadSize 行。如果为 'ReadSize' 指定的值超过输入数据的行数,则 read 将读取数据存储对象中的所有行。
'ReadSize' 的默认值是 1。
数据类型: double
在调用 read 函数时要在其中读取数据的维度,指定为由 'IterationDimension' 和正整数组成的以逗号分隔的对组。例如,'IterationDimension',2 使 read 从数据存储对象返回列向数据。'IterationDimension' 的默认值为 1,这使得 read 返回行向数据。
如果将 'OutputType' 属性的值指定为 'same',则 'IterationDimension' 必须设置为值 1。
如果在创建 ArrayDatastore 对象后修改 'IterationDimension' 的值,则 MATLAB® 会将数据存储重置为未读状态。
数据类型: double
输出数据类型,指定为以逗号分隔的对组,该对组由 'OutputType' 和下列值之一组成:
'cell'- 以 n×1 元胞数组形式返回数据。例如,如果A是数值数组,ReadSize是3,则read返回由数值数据组成的 3×1 元胞数组。'same'- 返回与输入数组A相同的数据类型。例如,如果A是数值数组,则read返回数值数组。
OutputType 的值决定 preview、read 和 readall 函数返回的数据类型。
如果在创建 ArrayDatastore 对象后修改 'OutputType' 的值,则 MATLAB 会将数据存储重置为未读状态。
数据类型: char | string
对象函数
示例
从矩阵中创建一个 ArrayDatastore 对象,然后读取数据存储中的所有数据。
创建一个矩阵。
A = magic(10)
A = 10×10
92 99 1 8 15 67 74 51 58 40
98 80 7 14 16 73 55 57 64 41
4 81 88 20 22 54 56 63 70 47
85 87 19 21 3 60 62 69 71 28
86 93 25 2 9 61 68 75 52 34
17 24 76 83 90 42 49 26 33 65
23 5 82 89 91 48 30 32 39 66
79 6 13 95 97 29 31 38 45 72
10 12 94 96 78 35 37 44 46 53
11 18 100 77 84 36 43 50 27 59
从矩阵中创建一个 ArrayDatastore 对象。
arrds = arrayDatastore(A)
arrds =
ArrayDatastore with properties:
ReadSize: 1
IterationDimension: 1
OutputType: "cell"
读取数据存储中的所有数据。
readall(arrds)
ans=10×1 cell array
{[ 92 99 1 8 15 67 74 51 58 40]}
{[ 98 80 7 14 16 73 55 57 64 41]}
{[ 4 81 88 20 22 54 56 63 70 47]}
{[ 85 87 19 21 3 60 62 69 71 28]}
{[ 86 93 25 2 9 61 68 75 52 34]}
{[ 17 24 76 83 90 42 49 26 33 65]}
{[ 23 5 82 89 91 48 30 32 39 66]}
{[ 79 6 13 95 97 29 31 38 45 72]}
{[ 10 12 94 96 78 35 37 44 46 53]}
{[11 18 100 77 84 36 43 50 27 59]}
返回与输入数组相同的数据类型,而不是以 n×1 元胞数组形式返回数据。
基于电子表格文件 counties.xlsx 创建一个表。导入该电子表格中第五列到第十列的所有行。
T = readtable("counties.xlsx","Range",[1,5,67,10])
T=66×6 table
CountyName State StateName Population2010 HousingUnits2010 LandArea
_______________________ ______ _______________ ______________ ________________ __________
{'Fairfield County' } {'CT'} {'Connecticut'} 9.1683e+05 3.6122e+05 1.6185e+09
{'Hartford County' } {'CT'} {'Connecticut'} 8.9401e+05 3.7425e+05 1.9039e+09
{'Litchfield County' } {'CT'} {'Connecticut'} 1.8993e+05 87550 2.3842e+09
{'Middlesex County' } {'CT'} {'Connecticut'} 1.6568e+05 74837 9.5649e+08
{'New Haven County' } {'CT'} {'Connecticut'} 8.6248e+05 3.62e+05 1.5657e+09
{'New London County' } {'CT'} {'Connecticut'} 2.7406e+05 1.2099e+05 1.722e+09
{'Tolland County' } {'CT'} {'Connecticut'} 1.5269e+05 57963 1.0624e+09
{'Windham County' } {'CT'} {'Connecticut'} 1.1843e+05 49073 1.3284e+09
{'Androscoggin County'} {'ME'} {'Maine' } 1.077e+05 49090 1.2119e+09
{'Aroostook County' } {'ME'} {'Maine' } 71870 39529 1.7279e+10
{'Cumberland County' } {'ME'} {'Maine' } 2.8167e+05 1.3866e+05 2.1633e+09
{'Franklin County' } {'ME'} {'Maine' } 30768 21709 4.3942e+09
{'Hancock County' } {'ME'} {'Maine' } 54418 40184 4.11e+09
{'Kennebec County' } {'ME'} {'Maine' } 1.2215e+05 60972 2.2469e+09
{'Knox County' } {'ME'} {'Maine' } 39736 23744 9.4569e+08
{'Lincoln County' } {'ME'} {'Maine' } 34457 23493 1.1806e+09
⋮
基于该表创建一个数据存储。将 'OutputType' 设置为 'same',以返回与输入表相同的数据类型。
arrds = arrayDatastore(T,"OutputType","same")
arrds =
ArrayDatastore with properties:
ReadSize: 1
IterationDimension: 1
OutputType: "same"
预览数据存储中的数据。
preview(arrds)
ans=8×6 table
CountyName State StateName Population2010 HousingUnits2010 LandArea
_____________________ ______ _______________ ______________ ________________ __________
{'Fairfield County' } {'CT'} {'Connecticut'} 9.1683e+05 3.6122e+05 1.6185e+09
{'Hartford County' } {'CT'} {'Connecticut'} 8.9401e+05 3.7425e+05 1.9039e+09
{'Litchfield County'} {'CT'} {'Connecticut'} 1.8993e+05 87550 2.3842e+09
{'Middlesex County' } {'CT'} {'Connecticut'} 1.6568e+05 74837 9.5649e+08
{'New Haven County' } {'CT'} {'Connecticut'} 8.6248e+05 3.62e+05 1.5657e+09
{'New London County'} {'CT'} {'Connecticut'} 2.7406e+05 1.2099e+05 1.722e+09
{'Tolland County' } {'CT'} {'Connecticut'} 1.5269e+05 57963 1.0624e+09
{'Windham County' } {'CT'} {'Connecticut'} 1.1843e+05 49073 1.3284e+09
为 MAT 文件变量创建一个数据存储,然后从包含不同 ReadSize 值的文件中读取数据。
将 MAT 文件 BostonWeatherData.mat 加载到工作区中。
load 'BostonWeatherData.mat'为 weatherData 变量创建一个数据存储。将 ReadSize 设置为 10 行。ReadSize 的值决定每次调用 read 函数时从数据存储中读取多少行数据。将 'OutputType' 设置为 'same',以返回与输入数组相同的数据类型。
arrds = arrayDatastore(weatherData,"ReadSize",10, "OutputType","same")
arrds =
ArrayDatastore with properties:
ReadSize: 10
IterationDimension: 1
OutputType: "same"
从数据存储读取数据。
data1 = read(arrds)
data1=10×3 timetable
Time TemperatureF Humidity Events
___________ ____________ ________ ____________
01-Jul-2015 72 78 Thunderstorm
02-Jul-2015 72 60 None
03-Jul-2015 70 56 None
04-Jul-2015 67 75 None
05-Jul-2015 72 67 None
06-Jul-2015 74 69 None
07-Jul-2015 75 77 Rain
08-Jul-2015 79 68 Rain
09-Jul-2015 66 77 Rain
10-Jul-2015 69 74 Rain
将 ReadSize 属性值设置为 30,并从数据存储中读取。第二次调用 read 函数将从数据存储中读取接下来的 30 行。
arrds.ReadSize = 30;
从数据存储读取数据。
data2 = read(arrds)
data2=30×3 timetable
Time TemperatureF Humidity Events
___________ ____________ ________ ______
11-Jul-2015 76 49 None
12-Jul-2015 81 54 None
13-Jul-2015 72 81 None
14-Jul-2015 74 72 Rain
15-Jul-2015 75 87 Rain
16-Jul-2015 64 65 None
17-Jul-2015 68 72 None
18-Jul-2015 71 81 Rain
19-Jul-2015 81 73 Rain
20-Jul-2015 81 62 None
21-Jul-2015 76 66 None
22-Jul-2015 77 58 None
23-Jul-2015 75 52 None
24-Jul-2015 74 60 Rain
25-Jul-2015 66 81 None
26-Jul-2015 71 79 Rain
⋮
您可以选择要在其中读取 ArrayDatastore 中的数据的维度。例如,您可以通过沿第四个维度读取来读取其数据存储在 ArrayDatastore 中的视频帧。
加载视频数据。基于文件 xylophone.mp4 创建一个 VideoReader 对象。
v = VideoReader('xylophone.mp4');将 VideoReader 对象中的所有视频帧读入工作区中。
allFrames = read(v);
基于您读取的帧创建一个数据存储。将 'IterationDimension' 设置为 4 以沿第四个维度读取数据。将 'OutputType' 设置为 'cell' 以元胞数组形式返回数据。将 'ReadSize' 设置为 4 以便在每次调用 read 函数时读取四个视频帧。
arrds = arrayDatastore(allFrames,"IterationDimension",4,"OutputType","cell","ReadSize",4)
arrds =
ArrayDatastore with properties:
ReadSize: 4
IterationDimension: 4
OutputType: "cell"
读取数据存储中的前四个视频帧,并将其显示为矩形分块图像。
frames = read(arrds); imout = imtile(frames); imshow(imout)

提示
版本历史记录
在 R2020b 中推出
另请参阅
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)