主要内容

创建高数组

描述

例子

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

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

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

例子

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

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

例子

全部折叠

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

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

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

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

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

tabularTextDatastore还有几个选项可以在创建数据存储时指定文件和文本格式属性。

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

Varnames = {“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不会立即计算出该值。相反,与大多数使用tall数组的操作一样,结果是一个未求值的tall数组,其值和大小目前未知。

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

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

Sz =集合(s)
使用本地MATLAB会话评估tall表达式:-通过1 / 1:在1.3秒内完成评估,在1.5秒内完成
深圳=1×2123523年29

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

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

A = rand(100,4);高(A)
tA = 100 × 4高双矩阵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.328 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 - mean(tA);S = gather(sum(tB, [1,2]))
使用本地MATLAB会话评估tall表达式:-通过2中的第1步:在0.46秒内完成-通过2中的第2步:在0.52秒内完成评估在1.6秒内完成
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
复数支持:金宝app是的

输出参数

全部折叠

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

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

  • 的基础数据类型转换为内存中数组时t类(一)

看到高数组的延迟计算有关如何有效地使用高数组的信息。

提示

扩展功能

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

在R2016b中引入