主要内容

matlab.tall.transform

通过对数据块应用函数句柄来转换数组

描述

例子

助教= matlab.tall.transform (fcntX应用函数句柄fcn对每一个的数组tX并返回一个转换后的数组,助教

例子

助教= matlab.tall.transform (fcntX,……)指定几个数组tX,泰,…这些都是fcn.对每个数组的相同行进行操作fcn;例如,fcn (tX (n: m),泰(n: m,:)).的每个调用都传递高度为1的输入fcn

例子

助教结核病,...= matlab.tall.transform(fcntX,……),在那里fcn函数是否返回多个输出,返回数组助教,结核病,…的输出参数之一fcn.的所有输出fcn必须具有相同的高度,并且输出的数量必须与请求的数量相同matlab.tall.transform

例子

助教结核病,...= matlab.tall.transform(___、“OutputsLike”{巴勒斯坦权力机构PB,……})指定输出助教,结核病,…具有与原型数组相同的数据类型PA、PB,……,分别。您可以使用以前语法中的任何输入参数组合。

例子

全部折叠

使用matlab.tall.transform构建具有与另一个数组相似属性的零的高数组。

创建一个高的桌子airlinesmall.csv数据集。这些数据包含了美国航班到达和起飞时间的信息。提取ArrDelay变量,它是到达延迟的向量。

ds = tabularTextDatastore(“airlinesmall.csv”“TreatAsMissing”“NA”);ds。SelectedVariableNames = {“ArrDelay”“DepDelay”};Tt =高(ds);tX = tt。ArrDelay
tX = Mx1高双列向量8 8 21 13 4 59 3 11::

编写一个匿名函数,创建一个大小和数据类型与输入相同的零数组。

zerosLike = @(in) 0 (size(in),“喜欢”,);

使用matlab.tall.transform申请zerosLike对到达延迟向量的函数。结果是一个相同大小的tall向量,但其值都为零。

S = matlab.tall。变换(zerosLike tX)
s = Mx1高双列向量0 0 0 0 0 0 0 0::

从到达和离开延误的向量计算平均总航班延误。

创建一个高的桌子airlinesmall.csv数据集。这些数据包含了美国航班到达和起飞时间的信息。提取ArrDelay而且DepDelay变量,它们是到达和离开延迟的向量。

ds = tabularTextDatastore(“airlinesmall.csv”“TreatAsMissing”“NA”);ds。SelectedVariableNames = {“ArrDelay”“DepDelay”};Tt =高(ds);tX = tt.ArrDelay;tY = tt.DepDelay;

meanDelay函数将输入向量连接到一个矩阵中,对每一行的值求和(忽略nan),然后计算平均值。显示该函数文件的内容。

类型meanDelay
函数D = meanddelay (a,b) X = [a b];Y = sum(X,2,'omitnan');D = mean(Y);结束

使用matlab.tall.transform申请meanDelay函数中的每个数据块tX而且.结果是每个数据块中的平均总延迟。

D = matlab.tall。transform(@ meanddelay, tX, tY)
D = 7x1高双列向量14.0621 11.1639 17.2311 15.1852 12.5860 19.8596 14.4036

此操作假定将每个数据块缩减为一个标量值的结果可以装入内存。对于超大数据集和使用小块大小的数据集,这种假设可能不成立。

找出每一行数据中的最大值和该值的索引。

创建一个高的桌子airlinesmall.csv数据集。这些数据包含了美国航班到达和起飞时间的信息。提取ArrDelay而且DepDelay变量,它们是到达和离开延迟的向量。

ds = tabularTextDatastore(“airlinesmall.csv”“TreatAsMissing”“NA”);ds。SelectedVariableNames = {“ArrDelay”“DepDelay”};Tt =高(ds);tX = tt.ArrDelay;tY = tt.DepDelay;

maxDelay函数连接输入向量,然后查找最大到达或离开延迟时间及其列索引。显示该文件的内容。

类型maxDelay
function [M,I] = maxDelay(A,B) X = [A B];[M,I] = max(X,[],2);结束

使用matlab.tall.transform申请maxDelay函数中的每个数据块tX而且.结果是每一行数据的最大到达或离开延迟,以及指示最大值来自哪一列的索引向量。指数为1表示该行的到达延迟较大,指数为2表示出发延迟较大。

[M, idx] = matlab.tall。transform(@maxDelay, tX, tY)
M = Mx1高双列向量12 8 21 13 4 63 3 11::idx = Mx1高双列向量21 11 12 11::

使用“OutputsLike”返回一个表的选项matlab.tall.transform它与输入表有不同的变量。

用两个随机值的变量创建一个高表。

T =高(兰特(1e6,1),兰特(1e6,1)))
T = 1,000000 x2高表Var1 Var2 _______ _______ 0.81472 0.90399 0.90579 0.94095 0.12699 0.80252 0.91338 0.24205 0.63236 0.97566 0.09754 0.31723 0.2785 0.81279 0.54688 0.69743::::

这个函数tableDiff计算两个输入表变量之间的差值,并将结果作为新变量添加到表中。显示文件的内容。

类型tableDiff
函数Tout = tableDiff(Tin) d = Tin。Var2 - Tin.Var1;锡。Var3 = abs(d);Tin;结束

使用matlab.tall.transform申请tableDiff函数中的每个数据块T.由于输出表与输入表具有不同的变量,因此使用“OutputsLike”名称-值对提供一个原型表,其变量与输出相似(三个变量具有默认名称)Var1Var2,Var3).

Z = matlab.tall。变换(@tableDiff T“OutputsLike”,{表(1,1,1)})
Z = Mx3高表Var1 Var2 Var3 _______ _______ ________ 0.81472 0.90399 0.089267 0.90579 0.94095 0.035156 0.12699 0.80252 0.67553 0.91338 0.24205 0.67133 0.63236 0.97566 0.3433 0.9754 0.31723 0.21969 0.2785 0.81279 0.53429 0.54688 0.69743 0.15054::::::

输入参数

全部折叠

将函数转换为应用,指定为函数句柄或匿名函数。的每个输出fcn必须与第一个输入的类型相同tX.您可以使用“OutputsLike”选项返回不同数据类型的输出。如果fcn返回多个输出,则所有输出必须具有相同的高度。

的一般功能签名fcn

[a, b, c,…]= fcn(x, y, z, ...)
fcn必须满足这些要求:

  1. 输入参数-输入[x, y, z,…]是适合内存的数据块。这些块是通过从相应的高数组输入中提取数据来生成的[tX, tY, tZ,…].输入[x, y, z,…]满足以下属性:

    • 所有的[x, y, z,…]在任何允许的扩展后,在第一个维度中具有相同的大小。

    • 数据块[x, y, z,…]来自高维度中的相同索引,假设高数组在高维度中是非单例的。例如,如果tX而且在高维度是非单块的,那么第一组块可能是x = tX(1:2000,:)而且y = tY(1:2000,:)

    • 如果任何一个的第一个维度[tX, tY, tZ,…]大小为1,则对应的块[x, y, z,…]由高数组中的所有数据组成。

  2. 输出参数-输出[a, b, c,…]是块,适合在内存中,被发送到各自的输出[tA, tB, tC,…].输出[a, b, c,…]满足以下属性:

    • 所有的[a, b, c,…]必须在第一维度中有相同的大小。

    • 所有的[a, b, c,…]是否垂直连接到之前调用的各自结果fcn

    • 所有的[a, b, c,…]发送到各自目标输出数组中第一个维度中的相同索引。

  3. 功能规则- - - - - -fcn必须满足函数规则:

    • F ([inputs1;inputs2) == [F(inputs1);F (inputs2)):将函数应用于输入的连接应该与将函数分别应用于输入,然后将结果连接相同。

  4. 空输入-确保fcn可以处理高度为0的输入。当文件为空或对数据进行了大量过滤时,可能会出现空输入。

例如,这个函数接受两个输入数组,对它们进行平方,然后返回两个输出数组:

函数[xx,yy] = sqInputs(x,y) xx = x.^2;Yy = y.^2;结束
将此函数保存到可访问的文件夹后,可以调用该函数进行平方tX而且使用这个命令:
[tA,tB] = matlab.tall.transform(@sqInputs,tX,tY)

例子:tA = matlab.tall.transform(@(x) x .* 2, tX)指定用于相乘的匿名函数tX由2。

例子:tC = matlab.tall.transform(@plus,tX,tY)指定函数句柄@plus将两个数组相加。

数据类型:function_handle

输入数组,指定为标量、向量、矩阵或多维数组。输入数组用作指定函数的输入fcn.每个输入数组tX,泰,…必须有兼容的高度。当两个输入具有相同的高度时,或者当一个输入的高度为1时,它们具有兼容的高度。

输出数组的原型,指定为数组。当你指定“OutputsLike”,输出数组助教,结核病,…返回的matlab.tall.transform具有与指定数组相同的数据类型{PA、PB,…}

例子:tA = matlab.tall.transform(fcn,tX,'OutputsLike',{int8(1)});,在那里tX是双精度数组,返回一个作为int8而不是

输出参数

全部折叠

输出数组,以标量、向量、矩阵或多维数组的形式返回。如有任何输入matlab.tall.transform,那么所有输出参数也都是高的。否则,所有输出参数都是内存中的数组。

输出数组的大小和数据类型取决于指定的函数fcn.一般来说,输出助教,结核病,…必须都具有与第一个输入相同的数据类型吗X.但是,您可以指定“OutputsLike”返回不同的数据类型。输出数组助教,结核病,…都有相同的高度。

更多关于

全部折叠

高阵列块

从数据存储创建高数组时,底层数据存储有助于在计算期间移动数据。数据以离散块的形式移动,称为,其中每个块是一组连续的行,可以放入内存中。例如,一个2-D数组(如表)的一个块为X (n: m:),用于一些下标n而且.的值为基础ReadSize属性,但块的大小可能不完全相同。为了matlab.tall.transform,一个高数组被认为是许多这样的块的垂直连接:

例如,如果你使用总和函数作为变换函数,结果是和每一块.因此,结果不是返回元素总和的单个标量值,而是一个长度等于块数的向量。

ds = tabularTextDatastore(“airlinesmall.csv”“TreatAsMissing”“NA”);ds。SelectedVariableNames = {“ArrDelay”“DepDelay”};Tt =高(ds);tX = tt.ArrDelay;F = @(x) sum(x,“omitnan”);S = matlab.tall。变换(f, tX);S =集合(S)
S = 140467 101065 164355 135920 111182 186274 21321

版本历史

在R2018b中引入