MATLAB 内存不足,但不应如此

2023-12-24

我正在尝试申请PCA https://en.wikipedia.org/wiki/Principal_component_analysis在我的数据上使用princomp(x) https://www.mathworks.com/help/stats/princomp.html,已经标准化。

数据是<16 x 1036800 double>。这运行了我们的内存,这也是意料之中的,除了这是一台新计算机,该计算机拥有 24GB RAM 用于数据挖掘。 MATLAB 甚至在内存检查中列出了 24GB 可用空间。

MATLAB 在执行 PCA 时实际上是否耗尽了内存,或者 MATLAB 没有充分利用 RAM 的潜力?任何信息或想法都会有帮助。 (我可能需要增加虚拟内存,但假设 24GB 就足够了。)


对于大小为 n×p 的数据矩阵,PRINCOMP将返回大小为 p×p 的系数矩阵,其中每一列都是使用原始维度表示的主成分,因此在您的情况下,您将创建一个大小为的输出矩阵:

1036800*1036800*8 bytes ~ 7.8 TB

考虑使用PRINCOMP(X,'econ')仅返回具有显着差异的 PC

或者,考虑执行SVD 的主成分分析 http://en.wikipedia.org/wiki/Singular_value_decomposition#Relation_to_eigenvalue_decomposition: 在你的情况下n<<p,并且协方差矩阵无法计算。因此,不要分解 p×p 矩阵XX',仅分解较小的 n×n 矩阵就足够了X'X。参考这张纸 http://www2.imm.dtu.dk/pubdb/views/edoc_download.php/4000/pdf/imm4000.pdf以供参考。


EDIT:

这是我的实现,该函数的输出与PRINCOMP http://www.mathworks.com/help/stats/princomp.html(无论如何前三个):

function [PC,Y,varPC] = pca_by_svd(X)
    % PCA_BY_SVD
    %   X      data matrix of size n-by-p where n<<p
    %   PC     columns are first n principal components
    %   Y      data projected on those PCs
    %   varPC  variance along the PCs
    %

    X0 = bsxfun(@minus, X, mean(X,1));     % shift data to zero-mean
    [U,S,PC] = svd(X0,'econ');             % SVD decomposition
    Y = X0*PC;                             % project X on PC
    varPC = diag(S'*S)' / (size(X,1)-1);   % variance explained
end

我刚刚在我的 4GB 机器上尝试过,运行得很好:

» x = rand(16,1036800);
» [PC, Y, varPC] = pca_by_svd(x);
» whos
  Name             Size                     Bytes  Class     Attributes

  PC         1036800x16                 132710400  double              
  Y               16x16                      2048  double              
  varPC            1x16                       128  double              
  x               16x1036800            132710400  double              

Update:

The princomp函数已被弃用,取而代之的是pca http://www.mathworks.com/help/stats/pca.htmlR2012b 中引入,其中包含更多选项。

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

MATLAB 内存不足,但不应如此 的相关文章

  • Matlab:保存后翻转图例顺序和图例重叠图

    我正在尝试根据以下内容反转我的图例条目顺序matlab条形图中图例颜色的逆序 https stackoverflow com questions 31178005 reverse ordering of legend colors in m
  • 在 MATLAB 中重命名文件

    我正在尝试以编程方式重命名工作目录中的文件a temp txt to b hello txt 您建议如何这样做 MATLAB中有一个简单的文件重命名函数吗 我认为您正在寻找 MOVEFILE
  • 大型内存映射数组的高效点积

    我正在使用一些相当大 密集的 numpy 浮点数组 这些数组当前驻留在 PyTables 的磁盘上CArrays 例如 我需要能够使用这些数组执行高效的点积C A dot B where A是一个巨大的 1E4 x 3E5 float32
  • 使用 System.IO.Packaging 创建大型 ZIP 文件时出现 OutOfMemoryException

    我正在尝试调试OutOfMemoryException当创建一个相当大的ZIP文件使用System IO Packaging ZipPackage 该代码迭代大量对象 对每个对象执行以下操作 将对象数据序列化到临时文件 创建一个Packag
  • 测试 PCA 图上簇的显着性

    是否可以在 PCA 图上测试 2 个已知组之间聚类的显着性 测试它们的接近程度或分布量 方差 以及簇之间的重叠量等 这是一种定性方法 使用ggplot 在簇周围绘制 95 置信椭圆 注意stat ellipse 使用二元 t 分布 libr
  • 为什么连接终止

    我正在尝试使用随机森林分类模型H2OR 内部的库 训练集有 7000 万行和 25 个数字特征 总文件大小为 5 6 GB 验证文件的大小为 1 GB 我的系统有 16 GB RAM 和 8 核 CPU 系统成功读取 H2O 对象中的两个文
  • Matlab 和 Python 中的优化算法(dog-leg trust-region)

    我正在尝试使用 Matlab 和 Python 中的狗腿信赖域算法求解一组非线性方程 在Matlab中有fsolve https www mathworks com help optim ug fsolve html其中此算法是默认算法 而
  • 如何估计 std::map 的内存使用情况?

    例如 我有一个已知 sizeof A 和 sizeof B 的 std map 而 map 内部有 N 个条目 您如何估计其内存使用情况 我想说这就像 sizeof A sizeof B N factor 但到底是什么因素呢 也许不同的公式
  • 内存错误:numpy.genfromtxt()

    我有一个 50 000x5 000 矩阵 浮点 文件 使用时x np genfromtxt readFrom dtype float 要将文件加载到内存中 我收到以下错误消息 文件 C Python27 lib site packages
  • JVM 最大堆大小可以是动态的吗?

    JVM Xmx 参数允许将 JVM 的最大堆大小设置为某个值 但是 有没有办法让这个价值动态化呢 换句话说 我想告诉 JVM 看 如果你需要它 就继续从系统中获取 RAM 直到系统退出 提问原因分为两部分 首先 所讨论的应用程序可以根据用户
  • C# 应用程序可以使用多少 RAM? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 查找可以为 C# 中的数组分配多少内存

    我正在做一些需要初始化大数组的计算 数组的最大大小决定了我能解决的问题的最大大小 有没有一种方法可以以编程方式确定有多少内存可供使用 例如可能的最大字节数组 Thanks 嗯 依赖单个大数组会带来一系列相关问题 内存碎片 连续块 最大对象大
  • 在 Matlab 中高效获取像素坐标

    我想在 Matlab 中创建一个函数 给定一个图像 该函数将允许人们通过单击图像中的像素来选择该像素并返回该像素的坐标 理想情况下 人们能够连续单击图像中的多个像素 并且该函数会将所有相应的坐标存储在一个矩阵中 有没有办法在Matlab中做
  • 检测植物图片中的所有分支

    我想知道有什么可以检测下图中的所有绿色树枝 目前我开始应用 Frangi 过滤器 options struct FrangiScaleRange 5 5 FrangiScaleRatio 1 FrangiBetaOne 1 FrangiBe
  • 如何在放置颜色条后保持子图大小不变

    假设我们有一个 1 2 子图 我们在其中绘制了一些图形 如下所示 subplot 1 2 1 surf peaks 20 subplot 1 2 2 surf peaks 20 然后我们要添加一个颜色条 colorbar 我不希望结果中的正
  • 调整巨大数组的大小

    我正在我的应用程序中处理巨大的数组 需要调整它们的大小 假设您有一个 2Gb 的阵列 并且想要将其大小调整为 3Gb 有没有办法在暂时不需要 5Gb 的情况下调整它的大小 例如 给定一个 1Gb 堆 使用 Xmx1G flag public
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 当 Jenkins 在 Ubuntu 上作为守护进程运行时,如何为 Jenkins 提供更多堆空间?

    我的 Jenkins 作业内存不足 给java lang OutOfMemoryError构建日志中的消息 但我使用了 Ubuntu 包管理器 aptitude or apt get安装 Jenkins 我不知道在哪里可以更改分配给 Jen
  • 在matlab中绘制给定区域内(两个圆之间)的向量场

    我想在 Matlab 中绘制下面的向量场 u cos x x 0 y y 0 v sin x x 0 y y 0 我可以在网格中轻松完成 例如 x 和 y 方向从 2 到 2 x 0 2 y 0 1 x y meshgrid 2 0 2 2
  • @(t)在Matlab中是什么意思? [复制]

    这个问题在这里已经有答案了 正如标题所示 考虑到下面的上下文 t 在 Matlab 中到底意味着什么 computeNumericalGradient 是一个函数 cofiCostFunc 也是一个接受一堆参数的函数 问题是 t 对 cof

随机推荐

  • 如何对数据框中具有特定值的所有行进行子集化

    我有一个大型数据集 其中每行包含 NA 1 和 2 的不同组合 我想对仅包含 2 和 NA 的所有行进行子集化 因此 在下面的示例中 我想自动命名 Row1 和 Row4 并为其设置子集 df lt data frame Col1 c NA
  • JavaScript 中 ' 和 " 有什么区别?

    I saw 这个问题 https stackoverflow com questions 943795 difference between and我想知道 JavaScript 中同样的事情 如果在 JavaScript 中创建字符串时使
  • DOCX 和 PDF 的版本控制?

    我一直在玩git and hg最近 我突然想到这种东西对于文档来说非常有用 我有一个在 DOCX 中编辑并导出为 PDF 的文档 我尝试同时使用git and hg对它进行版本控制 结果是hg您最终只跟踪二进制文件 并且比较没有意义 虽然与
  • jquery 可拖动可放置 删除已放置

    如何从购物车中删除该商品 当然 您希望能够将项目拖放回去 function catalog accordion catalog li draggable appendTo body helper clone cart ol droppabl
  • ChromeCast 的 Java API

    有没有办法使用标准 桌面 Java 连接到 ChromeCast 我正在寻找一种自动化测试的方法 并希望我们的 CC s 自动播放视频 到目前为止我已经找到这个项目 https github com vitalidze chromecast
  • 需要两个键来获取唯一值的集合

    我想知道是否有人知道存储数据的好方法 以便使用两个键对其进行索引 基本上 我需要类似表格的东西 顶行是 key1 左列是 key2 字母是从索引返回的值 1 2 3 4 1 A B C D 2 B E F G 3 C F H I 4 D G
  • 使用 python 修剪网络摄像头的实时视频(从中删除帧)

    我有一个捕获视频流的网络摄像头 30 秒后 我想从开始处删除 1 秒的视频 并继续捕获视频流等等 简而言之 我只想保存直播视频的最新30秒 OpenCV不提供视频处理 ffmpeg 修剪视频但创建一个新的输出文件 我不想保留副本 Creat
  • 由于本地存储库问题,Mac 版 GitHub 在打开时崩溃

    我试图弄清楚为什么当我选择本地存储库时 我的 GitHub for Mac 在启动时崩溃 我从克隆的文件夹中添加了这个本地存储库 不幸的是 我正在使用 git 命令行 我一定做了一些事情来破坏本地 存储库 现在 我的 GitHub for
  • ASP.Net - 使用 Repeater 在客户端重复输入框

    我对在应用程序中创建用户配置文件有以下要求 用户应该能够在其个人资料中输入多个电话号码 电子邮件地址 屏幕看起来有点像这样 默认情况下 页面加载时会显示电话和电子邮件的单个文本框 用户可以单击 按钮添加其他号码 地址 单击 按钮后 我们需要
  • Azure Functions Core Tools 无法安装绑定所需的扩展

    我正在尝试在本地运行 Azure 函数 JavaScript 但失败了func start出现以下错误 AddConfig 绑定类型 表 未注册 请确保类型正确并安装绑定扩展 请注意 我已经成功安装了先决条件 这些先决条件在当时或写作时是
  • 当我在 C++ 中使用 auto bi = 123456789 时,它总是分配为 int 吗?

    如果我想让 bi 成为long int 不可能使用 auto 因为它总是分配为 int 吗 一些选项 auto bi 123456789 const char auto bi2 12345 int auto bi3 123456789 in
  • 使用 Windows API 写入和读取 Windows 注册表

    我正在尝试从 Windows 注册表中写入读取内容 写作 std string path c LPCTSTR str data TEXT path c str auto size static cast
  • 始终保持 git 镜像同步

    我有几个使用 Drupal 的网站 我有几个服务器 live dev1 dev2 Drupal 的代码库存储库很大 112Mb 所以我热衷于充分利用 git 的硬链接功能 这样每次我添加一个站点时都不会重复它 因此 比如说 我的实时服务器有
  • Symfony 2 / Doctrine 2:获取对 PersistentCollection 的更改

    我正在构建一个应用程序 用户可以在其中编辑一些数据 然后会看到一个屏幕 他可以在其中确认 并评论 他的编辑 在确认表单中 我显示对实体所做的更改 这适用于 正常 字段 以下是一些用于检查单个字段的代码 create form bind fo
  • 正则表达式:匹配Python中的句号和一个单词

    我是正则表达式的新手 我希望编写一个与 匹配的正则表达式后跟一个空格 后跟一个单词 不包含空格 例如 在字符串 The sound of cracking Splintering A shape displayed inice 中 正则表达
  • 操作错误:没有这样的模块:fts4

    您好 我尝试运行模糊匹配器代码 并弹出以下错误 OperationalError no such module fts4 有什么建议么 提前致谢 编辑 我已经尝试从网站下载 sqlite zip 并将其保存在 DLL 文件中 但它仍然不起作
  • xsl:for-each 只返回第一个节点

    我在使用 XSLT 时遇到了一些麻烦 我想从中输出每个子属性
  • Beautiful Soup:从html获取图片大小

    我想使用 Beautifulsoup 提取图片的宽度和高度 所有图片都有相同的代码格式 img src http somelink com somepic jpg width 200 height 100 我可以轻松提取链接 for pic
  • 编译错误,包 javax.ws.rs 不存在,依赖关系未从 maven 解析

    我在pom文件中提到了依赖库 库系统路径也存在 但是在使用maven clean install e X编译期间 它抛出错误说包不存在 INFO ERROR COMPILATION ERROR INFO ERROR C Users gopc
  • MATLAB 内存不足,但不应如此

    我正在尝试申请PCA https en wikipedia org wiki Principal component analysis在我的数据上使用princomp x https www mathworks com help stats