在Matlab中初始化向量以节省内存

在Matlab中初始化向量以节省内存,matlab,Matlab,我读到,在matlab中运行代码时,向量的初始化节省了内存,加快了执行时间,但我不知道在这种情况下如何做到这一点 我有一个重复使用的向量,并将其添加到循环中,因此我应该预先分配一个具有结束向量长度的向量。我试过了 vec=zeros(1,n) 但这会将零附加到输出矩阵的开头 clc clear n=6 x=0 vec=x for i=1:n x=x+1 vec=[vec,x] end vec 是否有其他方法初始化“vec”向量 现改为: clc

我读到,在matlab中运行代码时,向量的初始化节省了内存,加快了执行时间,但我不知道在这种情况下如何做到这一点

我有一个重复使用的向量,并将其添加到循环中,因此我应该预先分配一个具有结束向量长度的向量。我试过了

vec=zeros(1,n)
但这会将零附加到输出矩阵的开头

clc
clear
n=6
x=0
vec=x
    for i=1:n
        x=x+1
        vec=[vec,x]
    end
vec
是否有其他方法初始化“vec”向量

现改为:

clc
clear
n=6
x=0
vec=zeros(1,n) %changed from x=0
    for i=1:n
        x=x+1 
        vec(i)=x %changed from   vec=[vec,x]
    end
vec

您可以将其初始化为空数组,然后连接到它。Matlab允许这样做,但不确定这样做有多好。也不确定为什么要初始化零数组,然后将x值连接到它上。是否尝试将索引1设置为第一个x值,将索引2设置为第二个x值,等等?

如中所述,这可以简单地通过以下方式完成:‍‍‍‍‍‍ ‍‍‍‍‍‍ ‍‍‍‍‍‍ ‍‍‍‍‍‍ <代码>向量=0:6

您写道,“我知道向量的初始化可以在运行代码时节省内存”。
这句话不正确。务必参考文档以获取正确信息。
以下内容以英文写成:

用于
循环会增量增加 数据结构每次通过循环都会产生不利影响 性能和内存使用。反复调整阵列大小通常需要 MATLAB®花费额外的时间查找更大的连续数据块 内存,然后将数组移动到这些块中。通常,您可以 通过预先分配最大数量的 阵列所需的空间。“


所以这不是关于节省内存。这是关于提高内存使用率和执行时间。

是的,我应该将输出设置为索引值。没想到,谢谢。啊,好的。在这种情况下,初始化很好,只需执行vec[i]=x;vec(i)=x为索引设置值。vec[i]会提到什么?谢谢你的快速回答。对不起,我是说vec(I)。vec[i]应该抛出一个错误。初始化空数组,然后更改循环中数组的大小是一个错误。这是一个错误的问题吗?