主要内容

创建高数组

描述

例子

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高表Year Month DayofMonth DayOfWeek DepTime CRSDepTime ArrTime CRSArrTime uniqucarrier FlightNum TailNum ActualElapsedTime CRSElapsedTime AirTime ArrDelay DepDelay Origin Dest Distance TaxiIn TaxiOut Cancelled CancellationCode altered 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)
using the Local MATLAB Session: - Pass 1 of 1: Completed in 1.3 sec
深圳=1×2123523年29

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

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

一个=兰德(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.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]))
using the Local MATLAB Session: - Pass 1 of 2: Completed in 0.46 sec - Pass 2 of 2: Completed in 0.52 sec
S = -1.0004 e-11

如果你调整N这样就有足够的内存来存储助教,但没有足够的内存进行复制,计算仍然成功执行。

输入参数

全部折叠

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

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

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

例子:ds = tabularTextDatastore (* . csv)指定一个集合. csv文件。

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

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

内存变量,指定为数组。

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

输出参数

全部折叠

Tall数组,返回如下类型之一:

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

  • 在转换内存中的数组时,的基础数据类型t是一样的类(一)

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

提示

扩展功能

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

介绍了R2016b