Ano*_*oop 13 arrays indexing matlab
我以前用Java和Python编程,但最近已经开始使用MATLAB来处理很多东西(特别是计算机视觉算法).
然而,MATLAB对数组的索引从1开始而不是0,这是我到目前为止遇到的几乎所有编程语言的标准.
基于0的索引对我有意义的原因是这样的:在我看过的每个处理器中,地址索引以0x00000000开头,比如8位处理器,如果我要保存5个数字,它们将存储在地址0x00000000中到0x00000004.因此,在编程语言中从0开始索引是有意义的.
当我在搜索这个问题的时候,我找到了1索引编程语言的列表?和http://en.wikipedia.org/wiki/Comparison_of_programming_languages_(array)有用.
对我来说这不是一个非常方便的符号,也许是因为我以前用其他语言编码.但我仍然不明白为什么MATLAB(现在甚至是Julia)都有一个基于1的数组索引以及它提供的优势.有人能列出这些优势吗?
cha*_*pjc 20
为什么它有基于1的索引?历史原因.(Cleve Moler决定如此).它可能与基于1的索引是矩阵表示法的约定有关.
为什么它也没有实现基于0的索引?一些不错的阅读?
特别是,请寻找Cleve Moler(MATLAB的创建者)和Steve Lord(MathWorks工程师)的评论.经过多次交流之后,不实施基于0 的补充索引的基本推理(至少在2001年)不是出于任何哲学或兼容性原因,尽管它起初是一个向后兼容性的论点,但是因为它需要太多的努力更新MATLAB内置函数:
我同意可以使用新的表示法或重载所有现有索引表示法的对象,为MATLAB添加从零开始的索引.它可以向后兼容,因为不知道或使用新东西的旧代码仍然可以工作.
但这里的关键点是:我们现有的代码都不适用于新对象.你不能绘制它; 你不能打印它; 你当然不能用它做任何矩阵操作.是的,随着时间的推移,一切都可以重写以处理扩展,但这是我们想要避免的.它就像AM和FM收音机 - 两个系统生活在同一个盒子里,但具有独立和独立的底层技术.
- Cleve Moler
moler@mathworks.com
翻译:他们不想写所有新的情节,印刷等惯例.
Matlab旨在使那些尚未学习编码的人可以访问编程语言的功能.索引从0开始可能是不熟悉编程的人的常见错误来源,而Matlab的全部意义在于使人们能够将他们理解的数学应用于他们需要解决的问题,而无需额外的知识.
Matlab用于的大多数任务,例如物理和工程,在大多数文献中使用从1开始的索引约定,因此在这些领域工作的人不需要通过从所有内容中减去1来转换他们的算法.
除此之外,Matlab是"矩阵实验室"的缩写,在数学中,约定通常是从1开始索引矩阵,因此它们将遵循这个约定是有道理的.
你从0开始有意义的理由非常好,但是像matlab这样的高级语言的目的是模糊用户不需要知道的这些方面.
| 归档时间: |
|
| 查看次数: |
17542 次 |
| 最近记录: |