在 MATLAB 中从数组中选择元素

2024-03-20

我知道在 MATLAB 中,在一维情况下,您可以选择具有索引的元素,例如a([1 5 3]),返回 a 的第 1 个、第 5 个和第 3 个元素。我有一个二维数组,并且想根据我拥有的一组元组选择单个元素。所以我可能想要得到a(1,3), a(1,4), a(2,5)等等。目前我拥有的最好的是diag(a(tuples(:,1), tuples(:,2)),但这需要大量的内存来存储较大的 a 和/或元组。我是否必须将这些元组转换为线性索引,或者是否有一种更清晰的方法可以在不占用太多内存的情况下完成我想要的任务?


转换为线性索引似乎是一种合法的方法:

indices = tuples(:, 1) + size(a,1)*(tuples(:,2)-1);
selection = a(indices);

请注意,这也在 Matlab 内置解决方案中实现sub2ind,如 nate'2 答案中所示:

a(sub2ind(size(a), tuples(:,1),tuples(:,2)))

然而,

a = rand(50);
tuples = [1,1; 1,4; 2,5];

start = tic;
for ii = 1:1e4
    indices = tuples(:,1) + size(a,1)*(tuples(:,2)-1); end
time1 = toc(start);


start = tic;
for ii = 1:1e4
    sub2ind(size(a),tuples(:,1),tuples(:,2)); end
time2 = toc(start);

round(time2/time1)

这使

ans =   
    38

所以虽然sub2ind眼睛更舒服,也是~40倍slower。如果您必须经常进行此操作,请选择上面的方法。否则,使用sub2ind以提高可读性。

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

在 MATLAB 中从数组中选择元素 的相关文章

随机推荐

  • GStreamer Tee(多路复用器)

    我正在尝试将视频流 来自我的网络摄像头 存储到 MKV 和 FLV 文件中 这意味着我必须在 h264 编码后分割视频和音频管道 并使用不同的复用器复用每个路径 这就是我想象的它应该如何工作 gt queue gt matroskamux
  • 监听/处理 JPanel 事件

    先生们女士们晚上好 我有一个无法解决的 Java Swing 问题 也许你可以帮助我 这里是 我有一个使用 BorderLayout 的 JFrame 和许多 JPanel 每次我需要建立一个新屏幕 即从主菜单中 单击搜索按钮时 转到搜索菜
  • 什么是数组到指针的转换又名。衰变?

    什么是数组到指针的转换又名 衰变 和数组指针有关系吗 据说数组 衰变 成指针 C 数组声明为int numbers 5 不能被重新指向 即你不能说numbers 0x5a5aff23 更重要的是 衰变一词意味着类型和维度的损失 number
  • 使用 Ajax 的 Jquery 日期选择器无法正常工作

    我的网站有很多类别 每个类别页面都有自己的帖子 在这里我使用了 jQuery datepicker 如果用户想查看 8 月 20 日的帖子 他们可以单击日历上的特定日期并查看日期帖子 另一件事 如果我打开一个类别 则应该只显示今天的帖子 请
  • 我想使用 mpdf 在 PDF 中设置页眉和页脚

    我已经使用生成了 PDFmpdfCodeIgniter 中的库 我想附加带有适当边距的页眉图像和页脚图像 我创建了一个代码 但页眉和页脚重叠 controller this gt load gt library m pdf param A4
  • 从 C 中的 UTF8 字符串中删除变音符号

    我正在编写一个 C 程序来搜索数据库中的大量 UTF 8 字符串 其中一些字符串包含带教义的英文字符 例如重音符号等 搜索字符串是由用户输入的 因此很可能不包含此类字符 有没有一种方法 函数 库等 可以从字符串中删除这些字符 或者只是执行不
  • unicharset_extractor:找不到命令

    我想使用超正方体创建新的列车数据 因此 请按照以下网站中提到的步骤进行操作 https blog cedric ws how to train tesseract 301 https blog cedric ws how to train
  • Scriptom Groovy 格式化 Excel 示例

    我正在寻找一些 Groovy 对 Excel 文档执行基本格式化命令的示例 我还想知道在哪里可以找到这些命令的存储库 你会怎样 插入一行 将单元格格式设置为短日期 时间等 将整列或整行加粗 怎么样 POI 3 9 假设您有一个输入 XLS
  • JMESPath - 连接嵌套数组中的项目

    我有一个 JSON key processId 29231 fields attachment id 79572 filename File1 png id 74620 filename File2 docx id 79072 filena
  • WinForms中发生关闭事件时如何保存数据?

    我想要一个消息框来询问表单关闭事件上未保存的数据 如果用户选择 是 则将数据保存在文本文件中并退出应用程序 如果用户选择不保存而不退出应用程序 我尝试了以下代码 但它不会关闭应用程序并使消息框一次又一次出现 public void Save
  • 带有 upstart 和 syslog 的 Ubuntu docker 容器

    四处搜寻后 我仍然很困惑你是否可以拥有码头集装箱运行 Ubuntu 并运行初始化系统 暴发户 and syslog 或不 我知道 docker 容器是用于运行单个进程而不是完整的操作系统 但我的用例是在各种 Linux 发行版上测试守护进程
  • 打印同一行两个字符串之间的文本

    我已经搜索了很长时间 但未能找到解决我的问题的有效答案 我从 HTML 文件中提取了一行sed 162 d skinlist html 其中包含文本 a href skin dwarf red beard 734 title Dwarf R
  • python.exe:没有名为 pyuic5 的模块

    我想将 ui 文件转换为 py 但 pyuic5 无法识别 当我进入 python 目录时 会出现此错误消息 如何修复这个错误 更通用的选项是 python m PyQt5 uic pyuic filename ui o filename
  • SPFileVersionCollection - 为什么版本按混合顺序排序?

    SPFileVersionCollection 和 SPListItemVersionCollection 版本控制对我来说似乎不一致 不一致对我来说不是问题 但排序顺序是问题 SPListItemVersionCollection 我可以
  • 重命名变量时使用 numlist 循环

    我正在尝试使用 tidyverse dplyr 重命名 R 中的两种类型的变量 第一个类型 var a year 我想将其重命名为 sample year 第二种变量 var b 7 我想将其重命名为 index year 第二个变量 va
  • 检测 SharePoint 文件是否打开

    第一次在这里发帖 如果我偏离了任何指导方针 我深表歉意 这是我的挑战 我有一个保存到 SharePoint 的状态跟踪文件 宏将打开此状态跟踪器 记录一些信息 保存并关闭文件 我试图包含一些代码来检测另一个用户是否打开了该状态文件 否 则当
  • 如何释放使用 mmap 分配的内存?

    我已经使用分配代码mmap 但由于分段错误而无法释放它 我已经做好了mprotect PROT WRITE使其可写 但我仍然无法释放它 我的代码 1 include
  • 如何在 PHP 中将多个 作为数组发布?

    这样在 PHP 中我可以将它们处理为 foreach POST checkboxname as i gt value 做这样的事情
  • 如何在本机反应中使用双击?

    如何在本机反应中使用双击 我希望如果用户双击图像而不是 setliked 状态触发器 那么我该如何在 rn 中做到这一点 就像 Instagram 帖子一样 他们在 rn 中是否有任何预构建包可以让我这样做 我正在使用 rn 0 70 5
  • 在 MATLAB 中从数组中选择元素

    我知道在 MATLAB 中 在一维情况下 您可以选择具有索引的元素 例如a 1 5 3 返回 a 的第 1 个 第 5 个和第 3 个元素 我有一个二维数组 并且想根据我拥有的一组元组选择单个元素 所以我可能想要得到a 1 3 a 1 4