创建高数组

描述

例子

t=高大(ds在数据存储顶部创建一个高大的数组ds

  • 如果ds是表格数据的数据存储(所以readall数据存储的方法返回表或时间表),然后t是一个高表或高时间表,这取决于配置要返回的数据存储。表格数据是以矩形方式排列的数据,每一行有相同数量的条目。

  • 否则,t是一个高单元阵列。

例子

t=高大(一个转换内存阵列一个进入一个高大的阵列。底层数据类型t是相同的类(一).当您需要快速创建一个大型数组时,这种语法非常有用,例如用于调试或创建算法原型。

在R2019B及更高版本中,您可以将内存阵列施入高阵列,以便在阵列上更有效的操作。转换为高大的数组后,Matlab®避免为大多数操作制作数据的临时副本。这使您能够在数组上执行更广泛的操作,而不会耗尽内存。

例子

全部收缩

将一个数据存储转换为一个高数组。

首先,为数据集创建一个数据存储。可以使用指定数据集的完整或相对文件位置数据存储(位置)创建数据存储。这位置参数可以指定:

  • 单个文件,例如'airlinesmall.csv'

  • 具有相同扩展的几个文件,例如‘* . csv‘

  • 文件的整个文件夹,例如“C: \ MyData”

tabulartextdatastore.在创建数据存储时,还有几个选项用于指定文件和文本格式属性。

创建一个数据存储区Airlinesmall.csv.数据集。治疗'na'值作为缺失数据,以便它们被替换为值。选择要使用的变量的小子集。

varnames = {'arrdelay'“DepDelay”'起源''ide'};ds = tabularTextDatastore ('airlinesmall.csv'“TreatAsMissing”'na'...'selectedvariamblenames', varnames);

为数据存储区中的数据创建高阵列。自数据以来ds是表格,结果是一张高桌子。如果数据不是表格式的,那么releged comper array。

T =高(ds)
T = MX4高表ARRDelay Depdelay Origin _____________ _____________________ 8 12 {'sjc'} {'san'} 21 20 {'san'} {'smf'} 1312 {'bur'} {'sjc'} 4 -1 {'lax'} {'lax'} 59 63 {'lax'} {'sjc'} 3 -2 {san'} {sfo'} 11-1 {'sea'} {'lax'} :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

您可以使用许多常见的MATLAB®运算符和功能与高阵列一起使用。要查看功能是否与高阵列合作,请检查扩展功能在函数参考页底部的。

将数据存储转换为高表,使用延迟计算计算其大小,然后执行计算并将结果返回在内存中。

对象的数据存储区Airlinesmall.csv.数据集。治疗'na'值作为缺失数据,以便它们被替换为值。设置几个列的文本格式,以便将它们读取为字符向量的单元格数组。将数据存储转换为一个高表。

ds = tabularTextDatastore ('airlinesmall.csv'“TreatAsMissing”'na');ds.SelectedFormats {strcmp (ds.SelectedVariableNames,'tailnum')} ='%s';ds.SelectedFormats {strcmp (ds.SelectedVariableNames,'取消代码')} ='%s';
T =高(ds)
T = Mx29高大表年月DAYOFMONTH DAYOFWEEK DepTime CRSDepTime ArrTime CRSArrTime UniqueCarrier FlightNum TailNum ActualElapsedTime CRSElapsedTime开播ArrDelay DepDelay产地目标距离TaxiIn TaxiOut取消CancellationCode改行CarrierDelay WeatherDelay NASDelay SecurityDelay LateAircraftDelay ____ _____ __________ _________ _______ __________ _______ __________ _____________ _________ _______ _________________ ______________ _______ ________ _______________ _______ ________ ______ _______ _________ ________________ ________ ____________ ____________ ________ _____________ _________________ 1987 10 21 3 642 630 735 727 { 'PS'} 1503 { 'NA'} 53 57的NaN 8 12 { 'LAX'} { 'SJC'} 308楠楠0 {'Na'} 0 NaN NaN NaN NaN NaN 1987 10 26 1116116116116116116116116 {'NA'} 63 56 NAN 8 1 {'SJC'} {'BUR'} 296南纳0{'Na'} 0 NaN NaN NaN NaN NaN 1987 10 23 5 2055 2035 2218 2157 {'PS'} 1589 {'NA'} 83 82 NaN 21 20 {'SAN'} {'SMF'} 480纳米·0 {'Na'} 0纳米南楠南纳1987 10 23 5 1332 1320 1431 1418 {'ps'} 1655 {'na'} 59 58 nan 13 12 {'bur'} {'sjc'} {'sjc'} 296 NaN NaN 0 {'Na'} 0纳米南纳纳纳纳198710 22 4 629 630 746 742 {'ps'} 1702 {'na'} 77 72 NaN 4 -1 {'SMF'} {'LAX'} 373 NaN NaN 0 {'Na'} 0纳米南纳纳纳198710 28 3 1446 1343 1547 1448 {'ps'} 1729 {'na'} 61 65 NaN 59 63 {'LAX'} {'SJC'} 308 NaN NaN 0 {'Na'} 0纳米南纳南纳纳1987 108 4 928 930 1052 1049 {'ps'} 1763 {'na'} 84 79 naN 3 -2 {'san'} {'sfo'} 447 nan nan 0 {'na'} 0纳米南纳纳纳纳纳1987 1010 6 859 900 1134 1123 {'ps'} 1800 {'na'} 155 143 nan 11 -1 {'sea'} {'lax'} 954 nan naN 0 {'na'} 0纳米南纳南纳:::::::::::::::::::::::::::::::::::::::::::::::::::: : : : : : :

高表的显示表示MATLAB®尚不知道表中有多少行数据。

计算高表的大小。由于计算一个高数组的大小需要完整地遍历数据,MATLAB不会立即计算值。相反,与长数组的大多数操作一样,结果是一个未求值的长数组,其值和大小目前都未知。

s =尺寸(t)
s = 1x2高大的双排矢量??

使用收集函数要执行延迟计算并将结果返回到内存中。结果返回大小是一个漫长的小小的1-2向量,适合内存。

深圳=收集(s)
使用本地MATLAB会话评估高表达: - 通过1的1:1:在1.4秒评估中完成的1.6秒
深圳=1×2123523年29

如果你使用收集在未发出的高阵列上,那么结果可能不适合内存。如果你不确定结果是否返回收集可以适合内存,使用收集(头(X))或者收集(尾(X))只将一小部分计算结果转换为内存。

创建一个随机数阵列,然后将其转换为高阵列。以这种方式从内存阵列中创建高阵列对于调试或原型设计新程序非常有用。内存阵列仍然受到正常内存约束的绑定,即使在将其转换为高大的数组之后,它也不能超过存储器的极限。

a = rand(100,4);ta =高(a)
tA = 100x4高双矩阵0.8147 0.1622 0.6443 0.0596 0.9058 0.7943 0.3786 0.6820 0.1270 0.3112 0.8116 0.0424 0.9134 0.5285 0.5328 0.0714 0.6324 0.1656 0.3507 0.5216 0.0975 0.6020 0.9390 0.0967 0.2785 0.8759 0.8181 0.5469 0.6541 0.5502 0.8175::::::::

在R2019B和稍后版本中,当您将内存阵列转换为高阵列时,您可以在数组上执行计算,而无需额外的存储器额外的数据。例如,此代码将大矩阵中的数据标准化,然后计算所有行和列的总和。此计算的内存版本需要不仅存储5GB阵列,而且还有足够的内存可用于创建数组的临时副本。

N = 25000;tA =高(兰德(N));tB = tA - mean(tA);S = sum(t, [1,2])
使用本地MATLAB会话评估高表达式:-通过2的1:在5秒完成-通过2的2:在12秒完成评估在18秒完成
s = 2.7467e-10

输入参数

全部收缩

输入数据存储,指定为数据存储对象。看到数据存储有关为数据集创建数据存储对象的详细信息。

高阵列仅使用确定性的数据存储。也就是说,如果你使用在数据存储上,用重启,然后再次读取数据存储,然后在两种情况下返回的数据必须相同。涉及不是确定性的数据存储的高阵列计算可以产生不可预测的结果。看到选择文件格式或应用程序的数据存储想要查询更多的信息。

例子:ds = tabularTextDatastore(“airlinesmall.csv”)指定单个文件。

例子:DS = tabulartextDataStore('*。CSV')指定一个集合.csv.文件。

例子:ds = spreadsheetDatastore (C: \ MyData)指定电子表格文件的文件夹。

例子:ds =数据存储(hdfs: / / /数据/)指定HDFS文件系统中的数据集。

内存中的变量,指定为数组。

数据类型:|双倍的|int8|int16|INT32.|INT64.|uint8|uint16|uint32|uint64|逻辑|桌子|时间表|字符串|细胞|分类|约会时间|持续时间|日历
复数的支持:万博1manbetx是的

输出参数

全部收缩

高大的数组,作为其中一种类型之一:

  • 转换数据存储时,t是表式数据存储的高表或高时间表。否则,t是一个高单元阵列。

  • 在转换内存中数组时,底层数据类型t是相同的类(一)

看到高数组的延迟求值有关如何有效使用高阵列的信息。

尖端

扩展功能

高大的数组
使用行数大于内存容量的数组进行计算。

介绍了R2016b