matlab - 逻辑索引如何工作?

标签 matlab

在像 Matlab 这样的一些高级语言中,您可以使用“逻辑索引”来选择数组中的整组条目进行操作。

我了解什么是逻辑索引以及如何使用它。

相反,我要问:

  • 它是如何运作的(“幕后”)?
  • 它不会归结为一个 for 循环吗?
  • 如果是这样,为什么它比 for 循环快这么多?

最佳答案

解释型语言可以被认为是在模拟核心上运行的汇编程序的变体。他们有堆栈和命令,它们以类似于汇编器的方式工作,但实际上并不是汇编器。它们是虚拟机。

for 循环可以被认为是告诉系统,设置一个值,运行一系列任务,完成后返回并检查该值。如果它没有达到阈值,则按照规定的方式进行更改,然后重复这些任务并返回。在汇编程序中,你运行得很快,但在“虚拟机”中就没那么快了。考虑这个链接 13:50 到 15:30 之间的演示:( link )

这意味着看似 for 循环的内容实际上并不是 for 循环。它是操作系统中断和虚拟化内存。它是后台病毒扫描和 megasloth bloatware。

如果您有一个虚拟系统,您能否创建一条不使用虚拟化 for 循环的内存寻址捷径,这样效率相当高? MatLab 试图主攻数据处理,因此它必须有非常有效的方法来在其虚拟机中存储、排序和选择数据。

MathWorks 不会向公众公开这方面的详细信息。如果它有一个好主意,那么他们不希望它在 Python 和明天的 R 中实现。如果它有一个平庸的想法,那么他们不想在明天的执行中被 Python 和 R 打败。无论哪种方式,在没有 NDA 的情况下让公众可以访问该特定方法的具体细节 - 这对他们来说可能是一个失败的提议。

底线:

  • 它不是真正的“for”,即使是 for 循环,因为它是虚拟运行的
  • 他们正在开放一些数据处理的内部结构以提高可用性
  • 由于负面的业务后果,他们不太可能披露实际代码

值得注意的是,矢量化代码在做同样的事情时可以胜过 for 循环。这意味着他们可能会将更多的内部机制应用于执行“任务序列”以提高性能。

关于matlab - 逻辑索引如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21944149/

相关文章:

matlab - 在算术运算中使用逻辑而不是整数数组和值有什么缺点吗?

matlab - 在 MATLAB 中优化手动编码的 k 均值?

matlab - 机器学习 - 在训练数据中引入偏差

python - matlab在python中的 "permute"

java - 如何在 Matlab 中使用用户定义的 Java 类?

matlab - 如何提高以下 Matlab 代码的执行时间

matlab - 根据引导方法获得的经验分布计算置信区间

matlab - 在 MATLAB 中将纬度、经度和温度绘制为等值线图

python - Python 的标准库中是否有 linspace 函数?

Matlab在图外添加文字