当前位置: 首页 > 工具软件 > tall > 使用案例 >

matlab中的tall,创建 tall 数组

宗政法
2023-12-01

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

首先,为 airlinesmall.csv 数据集创建数据存储。将 'NA' 值视为缺失数据,以使它们被替换为 NaN 值。设置几个列的文本格式,以便将它们作为字符向量元胞数组读取。将数据存储转换为 tall 表。

ds = tabularTextDatastore('airlinesmall.csv', 'TreatAsMissing', 'NA');

ds.SelectedFormats{strcmp(ds.SelectedVariableNames, 'TailNum')} = '%s';

ds.SelectedFormats{strcmp(ds.SelectedVariableNames, 'CancellationCode')} = '%s';

T = tall(ds)

T =

Mx29 tall table

Year Month DayofMonth DayOfWeek DepTime CRSDepTime ArrTime CRSArrTime UniqueCarrier FlightNum TailNum ActualElapsedTime CRSElapsedTime AirTime ArrDelay DepDelay Origin Dest Distance TaxiIn TaxiOut Cancelled CancellationCode Diverted CarrierDelay WeatherDelay NASDelay SecurityDelay LateAircraftDelay

____ _____ __________ _________ _______ __________ _______ __________ _____________ _________ _______ _________________ ______________ _______ ________ ________ _______ _______ ________ ______ _______ _________ ________________ ________ ____________ ____________ ________ _____________ _________________

1987 10 21 3 642 630 735 727 {'PS'} 1503 {'NA'} 53 57 NaN 8 12 {'LAX'} {'SJC'} 308 NaN NaN 0 {'NA'} 0 NaN NaN NaN NaN NaN

1987 10 26 1 1021 1020 1124 1116 {'PS'} 1550 {'NA'} 63 56 NaN 8 1 {'SJC'} {'BUR'} 296 NaN NaN 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 NaN NaN 0 {'NA'} 0 NaN NaN NaN NaN NaN

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

: : : : : : : : : : : : : : : : : : : : : : : : : : : : :

: : : : : : : : : : : : : : : : : : : : : : : : : : : : :

tall 表的显示内容指示 MATLAB® 尚不了解表中有多少行数据。

计算 tall 表的大小。由于计算 tall 数组的大小需要完全遍历数据,因此 MATLAB 不会立即计算该值。而是与 tall 数组的大多数运算一样,结果是一个未计算的 tall 数组,其值和大小目前是未知的。

s = size(T)

s =

1x2 tall double row vector

? ?

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

sz = gather(s)

Evaluating tall expression using the Local MATLAB Session:

- Pass 1 of 1: Completed in 1.7 sec

Evaluation completed in 2 sec

sz = 1×2

123523 29

如果对未约简的 tall 数组使用 gather,则结果可能不适合放在内存中。如果您不确定 gather 返回的结果是否适合放在内存中,请使用 gather(head(X)) 或 gather(tail(X)) 只将一小部分计算结果放入内存中。

 类似资料: