什么';Matlab中的长度代码是什么?
我试图理解什么';Matlab中的长度代码是什么?,matlab,Matlab,我试图理解长度是什么意思。假设我们有向量A=[1,2,3,4,5,6,7,8]当我们编码length(A)时,它吐出8表示元素的# length命令是如何工作的? 我一直认为这是一个for循环 A = [could be any size]; for i = A % takes each element of A i = i+1; % add 1 for each new element thus counting the elements end 请帮助我理解它 您应该期望一
长度
是什么意思。假设我们有向量A=[1,2,3,4,5,6,7,8]
当我们编码length(A)
时,它吐出8
表示元素的#
length
命令是如何工作的?
我一直认为这是一个for循环
A = [could be any size];
for i = A % takes each element of A
i = i+1; % add 1 for each new element thus counting the elements
end
请帮助我理解它 您应该期望一些行为,比如在系统级别访问数组的大小。Matlab当然知道它有多大,因为它需要内存,所以不需要真正运行它并计算数字 无论如何,您的示例代码不能按预期工作。根据,在每个循环中,
i
等于数组a
的一片i
是一个独立变量,不影响A
i=i+1
仅表示将1
添加到等于a
某一部分的变量中
如果你真的想“计算”元素,那么
c = 0;
for ii = 1:length(A)
c = c+1;
end
但是,为了开始循环,首先需要A的长度。…要了解
长度
的工作原理,需要了解Matlab如何在内存中存储其数据结构的细节。Mathworks并没有透露太多细节,但以下是相关的观点:
数组头
将数组指定给变量时,MATLAB也会
将有关数组的信息(例如类和维度)存储在
称为头的独立内存块
因此,维度已与数组一起存储。length
需要做的就是找到它们的最大值
还值得注意的是(来自同一份文件):
以下主题提供了有关如何使用MATLAB®软件的信息
使用数组和变量时分配内存。目的
是为了帮助您在编写代码时更有效地使用内存。大部分
然而,现在你不必担心这些
MATLAB为您处理数据存储时的内部操作
自动地
注意有关MATLAB软件如何处理数据的任何信息
内部版本可能会在将来的版本中发生更改
它实际上相当于
max(size(X))
,可以通过在命令窗口中输入open length
看到它(只要length
未被覆盖或定义为变量)。@zheyuan li,length
是内置的,因此没有可读取的源代码。一个更好的建议是阅读关于内存中数组表示的内容,等等。我猜Matlab使用了某种数据类型,可以在内部跟踪其大小。然后,长度只是函数返回的变量的一部分。当然,没有涉及到循环。最终的条件是什么?在Matlab中,这种信息对脚本编写者来说是隐藏的,我只能接受它是有效的。@nirvana msu你知道length
上的内置注释特别命名了这种等价性吗?@Bernhard,这是对另一个已被删除的“go read source code”的回应。关于max(size(X))
,是的,评论提到结果是等效的,但这只是解释length
的作用,而不是解释它是如何作用的。实际实现与max(size(X))
无关。