主要内容

创建高数组

描述

例子

t=高(ds在数据存储上创建一个高数组ds

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

  • 否则,t是一个高单元格数组。

例子

t=高(一个转换内存中的数组一个排成一排。的基础数据类型t类(一).当您需要快速创建一个高数组时,例如调试或创建算法原型时,此语法非常有用。

在R2019b及以后版本中,可以将内存中的数组强制转换为高数组,以便对数组进行更有效的操作。转换成高数组后,MATLAB®避免对整个数组进行临时复制,并在较小的块中处理数据。这使您能够在不耗尽内存的情况下对数组执行更广泛的操作。

例子

全部折叠

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

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

  • 单个文件,如“airlinesmall.csv”

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

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

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

对象的数据存储airlinesmall.csv数据集。治疗“NA”值作为缺失的数据,以便将它们替换为值。选择要处理的变量的一小部分。

变量名= {“ArrDelay”“DepDelay”“起源”“桌子”};ds = tabularTextDatastore(“airlinesmall.csv”“TreatAsMissing”“NA”...“SelectedVariableNames”, varnames);

使用为数据存储中的数据创建一个高数组。因为数据在ds是表格,结果是一个高的表。如果数据不是表格式的,那么相反,创建一个高单元格数组。

T =高(ds)
T = Mx4高表ArrDelay DepDelay起源服务台  ________ ________ _______ _______ 8 12{“宽松”}{‘SJC} 8 1{‘SJC}{“钻”}21 20{‘圣’}{SMF的}13 12{“钻”}{‘SJC} 4 1 {SMF的}{“宽松”}59 63{“宽松”}{‘SJC} 3 2{‘圣’}{“旧金山”}11 1{‘海’}{松懈 '} : : : : : : : :

您可以使用许多常见的MATLAB®操作符和函数来处理高数组。要查看函数是否适用于高数组,请检查扩展功能部分在函数参考页的底部。

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

的数据存储airlinesmall.csv数据集。治疗“NA”值作为缺失的数据,以便将它们替换为值。设置几个列的文本格式,以便将它们作为字符向量的单元格数组读取。将数据存储转换为高表。

ds = tabularTextDatastore(“airlinesmall.csv”“TreatAsMissing”“NA”);ds.SelectedFormats {strcmp (ds.SelectedVariableNames,“TailNum”)} =' % s ';ds.SelectedFormats {strcmp (ds.SelectedVariableNames,“CancellationCode”)} =' % 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 21 642 630 735 727 1503{“PS”}{“NA”}53 57南8 12{“宽松”}{‘SJC} 308年南南{“NA”}0南南南南南26 1 1021 1020 1124 1987 1116 1550{“PS”}{“NA”}63 56南8 1{‘SJC}{“钻”}296年南南{“NA”}0南南南南南1987 10 23 5 2055 2035 2218 2157 1589{“PS”}{“NA”}83 82南21 20{‘圣’}{SMF的}480年南南{“NA”}0南南南南南1987 10 23 5 1332 1320 1431 1418 {'PS'} 1655 {'NA'} 59 58 NaN 13 12 {'BUR'} {'SJC'} 296 NaN NaN 0 {'NA'} 0 NaN NaN NaN NaN NaN 1987 10 22 4 629 630 746 742 {'PS'} 1702 {'NA'} 77 72 NaN 4 -1 {'SMF'} {'LAX'} 373 NaN NaN 0 {'NA'} 0 NaN NaN NaN NaN NaN 1987 10 28 3 1446 1343 1547 1448 {'PS'} 1729 {'NA'} 61 65 NaN 59 63 {'LAX'} {'SJC'} 308 NaN NaN 0 {'NA'} 0 NaN NaN NaN NaN NaN 1987 10 8 4 928 930 1052 1049 {'PS'} 1763 {'NA'} 84 79 NaN 3 -2 {'SAN'} {'SFO'} 447 NaN NaN 0 {'NA'} 0 NaN NaN NaN NaN NaN 1987 10 10 6 859 900 1134 1123 {'PS'} 1800 {'NA'} 155 143 NaN 11 -1 {'SEA'} {'LAX'} 954 NaN NaN 0 {'NA'} 0 NaN NaN NaN NaN NaN : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :

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

计算一下这张高桌子的大小。由于计算高数组的大小需要对数据进行完整的传递,因此MATLAB不会立即计算出数值。相反,与使用高数组的大多数操作一样,结果是一个未求值的高数组,其值和大小目前未知。

s =大小(T)
S = 1x2高双行向量??

使用收集函数执行延迟计算并在内存中返回结果。返回的结果大小是一个非常小的1 × 2向量,它适合内存。

集合(s)
使用本地MATLAB会话计算高表达式:通过1 / 1:在1.4秒内完成计算在1.7秒内完成
深圳=1×2123523年29

如果你使用收集在非约简高数组上,则结果可能无法装入内存。如果您不确定返回的结果是否收集能装在内存里,用吗收集(头(X))收集(尾(X))只将计算结果的一小部分存入内存。

在内存中创建随机数数组,然后将其转换为高数组。以这种方式从内存数组创建高数组对于调试或创建新程序原型非常有用。内存中的数组仍然受普通内存约束,即使在转换为高数组之后,它也不能超过内存的限制。

A =兰特(100,4);高(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.2630 0.8759 0.8181 0.5469 0.6541 0.5502 0.8175::::::::

在R2019b和以后的版本中,当您将内存中的数组转换为高数组时,您可以在数组上执行计算,而不需要额外的内存用于数据的临时副本。例如,这段代码规范化一个大型矩阵中的数据,然后计算所有行和列的和。这种计算的内存版本不仅需要存储数组,而且需要有足够的内存来创建数组的临时副本。

N = 5000;tA =高(兰德(N));tB = tA -平均值(tA);S = gather(sum(tB, [1,2]))
使用本地MATLAB会话计算高表达式:-通过2:在0.18秒内完成-通过2:在0.24秒内完成计算在0.67秒内完成
S = -1.0004e-11

的值N这样才有足够的内存来存储助教,但没有足够的内存用于拷贝,计算仍然成功执行。

输入参数

全部折叠

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

高数组只适用于确定的数据存储。也就是说,如果你使用在数据存储上,用重置数据存储重置,然后再次读取数据存储,那么在两种情况下返回的数据必须是相同的。涉及不确定性数据存储的高数组计算可能产生不可预测的结果。看到“文件格式”或“应用程序”选择“数据存储”更多信息。

例子:ds = tabularTextDatastore(' airlinsmall .csv')指定单个文件。

例子:ds = tabularTextDatastore('*.csv')的集合. csv文件。

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

例子:Ds = datastore('hdfs:///data/')HDFS文件系统中的数据集。

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

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑|表格|时间表|字符串|细胞|分类|datetime|持续时间|calendarDuration
复数支持:万博1manbetx是的

输出参数

全部折叠

高数组,作为以下类型之一返回:

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

  • 的基础数据类型t类(一)

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

提示

扩展功能

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

版本历史

在R2016b中引入