Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';Matlab中的长度代码是什么?_Matlab - Fatal编程技术网

什么';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))
无关。