Matlab 使用什么算法动态调整向量和矩阵的大小?

2023-12-10

运行这段代码:

n = 5;
x = zeros(n, 1);
for ix=1:10
   x(ix) = rand();
   disp(getfield(whos('x'), 'bytes'))
end

输出这个:

40
40
40
40
40
48
56
64
72
80

这似乎表明,当 Matlab 调整向量大小时,它会调整其大小,使其具有所需的空间,而不是更多。所以,一次一个元素。

将此与Sun 的 ArrayList Java 实现中的方法,它分配足够的空间,以便每次调整大小都不需要在高于初始边界的每个分配上进行。显然,由于 Matlab 不是开源的,所以无法 100% 告诉他们做了什么,但是有没有更好的方法来了解调整大小是如何完成的?上面的代码不是估计这个的好方法吗?


From 数学工厂' 软件开发经理 Steve Eddins:

MATLAB 使用更智能的启发式方法,而不是在需要更多内存空间时简单地将分配的内存空间加倍,因此对于大型数组,最坏情况的内存“过度分配”远小于两倍。我不打算在这里讨论更多细节,因为(a)我不知道它们,(b)我希望我们将在未来的版本中继续调整自动数组增长的启发式和其他方面。

因此,可以肯定地说,它不会一次为一个元素分配空间,而是在某种程度上过度分配。此外,正如 Alexandre Bizeau 所指出的,内存将是连续的。

另请参阅这一页用于阵列生长性能分析。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matlab 使用什么算法动态调整向量和矩阵的大小? 的相关文章

  • 我需要转义该 MATLAB 字符串中的字符吗?

    我想在 MATLAB 中调用以下 bash 命令 grep Up to test linux vision1 1 log awk print 7 I use system 在MATLAB中 但结果有错误 gt gt status strin
  • 如何测量Python中对象的内存使用情况?

    我有一个Python课程foo其中包含 数据 整数 浮点数 列表 整数 浮点数和其他对象的列表 字典 整数 浮点数 其他对象的 假设没有反向引用 循环 是否有一种简单的方法来测量一个进程的总内存使用量foo目的 本质上 我正在寻找一个递归版
  • matlab中类库的全局变量

    我有一些matlab声明的类 我如何声明所有类中都可见的常量 例如 这些常量可以是在所有类的方法中使用的物理常量 首先想到的是使用全局变量 还有更好的办法吗 最好在单独的文件中声明这些常量 包含常量的类是执行此操作的一种很好的干净方法 请参
  • 当行大小大于向量宽度时 SIMD 转置

    你可以找到很多good https stackoverflow com a 25625919 149138 answers https stackoverflow com a 29587984 149138用于转置一个矩阵 该矩阵落在nat
  • Forth 中 S" ..." 的生命周期是多少?

    我一直在尝试阅读此内容 但找不到任何提及 根据标准 创建的字符串S 无法修改 并且通过简单的实验Gforth http en wikipedia org wiki Gforth很明显 字符串的空间不是来自字典或填充区域 hex here 7
  • R 中的自定义对比:对比系数矩阵或对比矩阵/编码方案?以及如何到达那里?

    自定义对比在分析中应用非常广泛 例如 这个三水平因子的第 1 级和第 3 级的 DV 值是否有显着差异 直观上 这种对比用单元均值表示为 c 1 0 1 这些对比中的一个或多个 以列的形式绑定 形成对比系数矩阵 例如 mat matrix
  • matlab中的排列函数是如何工作的

    这是一个有点愚蠢的问题 但我似乎无法弄清楚排列在 matlab 中是如何工作的 以文档为例 A 1 2 3 4 permute A 2 1 ans 1 3 2 4 到底是怎么回事 这如何告诉 matlab 3 和 2 需要交换 哇 这是我迄
  • 如何使用 MATLAB 的 substruct 函数创建表示使用“end”的引用的结构?

    我想使用substruct http www mathworks com help matlab ref substruct html函数创建一个结构体以供使用subsref 目的是使用索引字符串subsref而不是通常的 符号 因为我正在
  • Bison/Flex 中哪里可以释放内存?

    我使用 Bison 和 Flex 的时间或多或少有 1 个月 所以如果我没有看到明显的东西 但我不认为是 我很抱歉 我在使用 Flex Bison 释放内存时遇到问题 我的代码如下所示 parser l DATE yylval str st
  • 理解高斯混合模型的概念

    我试图通过阅读在线资源来理解 GMM 我已经使用 K 均值实现了聚类 并且正在了解 GMM 与 K 均值的比较 以下是我的理解 如有错误请指出 GMM 类似于 KNN 在这两种情况下都实现了聚类 但在 GMM 中 每个簇都有自己独立的均值和
  • 如何在放置颜色条后保持子图大小不变

    假设我们有一个 1 2 子图 我们在其中绘制了一些图形 如下所示 subplot 1 2 1 surf peaks 20 subplot 1 2 2 surf peaks 20 然后我们要添加一个颜色条 colorbar 我不希望结果中的正
  • 如何更改Plotyy第二轴的颜色和字体大小?

    我使用 MATLAB 的plotyy 函数绘制了两条曲线 AX H1 H2 plotyy voltage span amplitude voltage span Ca SR The problem is that I cannot chan
  • 操作/Lambda 表达式内存管理问题

    我将一个操作存储在局部变量中 然后在该局部变量超出范围后使用 使用前是否有被清理的危险 这是一个例子 public List GetMaps Action
  • 如何在 MATLAB 中绘制 3D 曲面图?

    我有一个像这样的数据集 0 1 0 2 0 3 0 4 1 10 11 12 13 2 11 12 13 14 3 12 13 14 15 4 13 14 15 16 我想在 matlab 中绘制 3D 曲面图 使列标题位于 y 轴 行标题
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 了解 fminunc 参数和匿名函数、函数处理程序

    请多多包涵 问题在最后 我试图找出 fminunc 调用方式的差异 这个问题源于 Andrew Ng 在他的 Coursera 机器学习课程中的第 3 周材料 我正在回答这个问题 Matlab Andrew Ng 机器学习课程中 t cos
  • 如何计算 3D 坐标的线性索引,反之亦然?

    如果我有一个点 x y z 如何找到该点的线性索引 i 我的编号方案是 0 0 0 是 0 1 0 0 是 1 0 1 0 是最大 x 维度 另外 如果我有一个线性坐标 i 我如何找到 x y z 我似乎无法在谷歌上找到这个 所有结果都充满
  • NumPy 和 memmap:[Errno 24] 打开文件太多

    我正在处理大型矩阵 因此我使用 NumPy memmap 但是 我收到错误 因为显然 memmap 使用的文件描述符没有关闭 import numpy import tempfile counter 0 while True temp fd
  • R 中的 NA 替换函数

    我正在尝试替换矩阵中的 NA mat 零 我在用着mat is na mat lt 0 当我有 18946 个变量的 94531 个观察值或更小的矩阵时 效果很好 但我在 22752 个变量的 112039 个观察值的矩阵上尝试它 R 显示
  • .NET 内存不足故障排除

    在阅读了几篇有关 NET 技术中的内存的启发性文章后 Out of Memory 不是指物理内存 https learn microsoft com en us archive blogs ericlippert out of memory

随机推荐