在Matlab中初始化向量以节省内存
我读到,在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
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]应该抛出一个错误。初始化空数组,然后更改循环中数组的大小是一个错误。这是一个错误的问题吗?