延迟评价高数组
高大的数组之间的差异和内存MATLAB®数组是高数组通常仍然存在未鉴定的直到你要求计算被执行。(这条规则的例外包括绘图功能情节
和柱状图
和一些统计拟合函数fitlm
,自动评估高阵列输入。)虽然高数组是处于未鉴定的状态,MATLAB可能不知道它的大小,它的数据类型,或者它所包含的特定的值。然而,你仍然可以使用未鉴定的数组在你的计算值是已知的。这允许您快速处理大型数据集,而不是等待执行每个命令。由于这个原因,建议您使用收集
只有当你需要输出。
MATLAB跟踪执行的所有操作在未鉴定的高数组作为输入。当你最终调用收集
评估操作队列,MATLAB使用未鉴定的命令来优化计算的历史通过最小化通过数据的数量。使用得当,这种优化可以节省大量的执行时间通过消除不必要的经过大型数据集。
显示未鉴定的高数组
未鉴定的高的显示数组不同取决于多少MATLAB知道数组及其值。有三条信息反映在显示:
数组大小——未知变量所代表的尺寸大小
米
或N
在显示。如果没有尺寸大小是已知的,那么出现在大小MxNx ....
。数组数据类型数组——如果有一个未知的基本数据类型,那么它的类型显示为
高大的数组
。如果类型是已知的,它被列为,例如,高双数组
。数组的值——如果数组的值是未知的,然后他们出现
吗?
。显示已知值。
MATLAB可能知道一些,或者这些信息高约一个给定的数组,根据计算的本质。
例如,如果数组一个已知数据类型但未知的大小和价值观,那么未鉴定的高数组可能看起来像这样:
M×N×……高的双重数组?吗?吗?…吗?吗?吗?…吗? ? ? ... : : : : : :
如果类型和相对大小是已知的,那么会显示:
char数组1×N高?吗?吗?…
如果知道一些数据,然后用MATLAB显示已知值:
高100×3双矩阵0.8147 0.1622 0.6443 0.9058 0.7943 0.3786 0.1270 0.3112 0.8116 0.9134 0.5285 0.5328 0.6324 0.1656 0.3507 0.0975 0.6020 0.9390 0.2785 0.2630 0.8759 0.5469 0.6541 0.5502::::::
评估与收集
的收集
函数是用来评估高的数组。收集
接受高数组作为输入,并返回内存数组作为输出。出于这个原因,你可以把这个函数作为一个高大的数组和内存中的数组之间的桥梁。例如,你不能控制如果
或而
循环语句使用高的逻辑数组,但是一旦数组是评估收集
它成为一个内存中的逻辑值,您可以使用这些上下文。
收集
执行所有排队操作高数组并返回整个结果在内存中。自收集
返回结果为内存中的MATLAB数组,标准内存考虑应用。MATLAB可能耗尽内存,如果返回的结果收集
太大。
大多数时候你可以使用收集
看到整个计算的结果,特别是在计算包括减少操作等总和
或的意思是
。但是,如果结果是装入内存太大,那么你可以使用收集(头(X))
或收集(尾(X))
执行计算,只看第一或最后几排的结果。
解决错误与收集
如果你输入一个错误的命令收集
无法评估一个高大数组变量,那么你必须从工作区中删除该变量并重新创建高阵列使用只有有效的命令。这是因为MATLAB跟踪执行的所有操作在未鉴定的高数组作为输入。唯一途径使MATLAB对一个错误的声明是“忘记”从头开始重建高数组。
例如:计算高的数组的大小
这个例子展示了未鉴定的高数组是什么样子的,以及如何评价数组。
创建一个数据存储的数据集airlinesmall.csv
。将数据存储到一个高的表,然后计算大小。
varnames = {“ArrDelay”,“DepDelay”,“起源”,“桌子”};ds = tabularTextDatastore (“airlinesmall.csv”,“TreatAsMissing”,“NA”,…“SelectedVariableNames”,varnames);tt =高(ds)
tt =米×4表ArrDelay DepDelay起源桌子说_____ _____ 8 12“宽松”的SJC 8 1“SJC”“钻”21日20‘圣’的SMF 13 12“钻”“SJC”4 1 SMF的“宽松”59 63“宽松”的SJC 3 2“圣”“旧金山”11 1“海”“宽松”::::::::
s =大小(tt)
双行向量s = 1×2高?吗?预览延期。学习更多的知识。
计算高大小的数组返回一个小的答案(1×2向量),但显示表明,整个仍然需要通过数据计算的大小tt
。
使用收集
函数充分评估高数组并把结果到内存中。命令执行,是一个动态的进展在命令窗口中显示,与长计算特别有用。
请注意
总是确保返回的结果收集
能够适应在内存中。如果你使用收集
直接在一个高大的数组使用等功能而不降低它的大小的意思是
,然后用MATLAB可能耗尽内存。
tableSize =收集(s)
评估高表达式使用当地的MATLAB会话:通过1 1:在0.42秒完成评估在0.48秒完成tableSize = 123523 4
例子:多次计算有着高大的数组
这个例子展示了如何结合几个计算最小化通过数据的总数。
创建一个数据存储的数据集airlinesmall.csv
。将数据存储到一个高的表。
varnames = {“ArrDelay”,“DepDelay”,“起源”,“桌子”};ds = tabularTextDatastore (“airlinesmall.csv”,“TreatAsMissing”,“NA”,…“SelectedVariableNames”,varnames);tt =高(ds)
tt =米×4表ArrDelay DepDelay起源桌子说_____ _____ 8 12“宽松”的SJC 8 1“SJC”“钻”21日20‘圣’的SMF 13 12“钻”“SJC”4 1 SMF的“宽松”59 63“宽松”的SJC 3 2“圣”“旧金山”11 1“海”“宽松”::::::::
减去的平均值DepDelay
从ArrDelay
创建一个新的变量AdjArrDelay
。然后计算的平均值AdjArrDelay
减去这个平均值AdjArrDelay
。如果这些计算都是单独评估,那么MATLAB将需要四个通过数据。
AdjArrDelay = tt。ArrDelay- mean(tt.DepDelay,“omitnan”);AdjArrDelay = AdjArrDelay -意味着(AdjArrDelay“omitnan”)
双列向量AdjArrDelay = M×1高?吗?吗?::预览延期。学习更多的知识。
评估AdjArrDelay
并查看前几行。因为一些计算可以组合,只需要三个通过数据。
收集(头(AdjArrDelay))
评估高表达式使用当地的MATLAB会话:通过1 3:在0.4秒完成,通过2 3:在0.39秒完成,通过3 3:在0.23秒完成评估在1.2秒完成ans = 0.8799 0.8799 13.8799 5.8799 -3.1201 - 51.8799 -4.1201 - 3.8799
总结和建议的行为
高数组仍未评价的,直到你请求输出使用
收集
。使用
收集
在大多数情况下评估高计算数组。如果你相信计算的结果可能不适合在内存中,然后使用收集(头(X))
或收集(尾(X))
代替。工作主要是未鉴定的高数组和请求输出仅在必要时。未鉴定的排队计算越多,越优化MATLAB可以通过数据的数量降到最低。
如果你输入一个错误的高命令和数组
收集
无法评估一个高大数组变量,那么你必须从工作区中删除该变量并重新创建高阵列使用只有有效的命令。