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

时间:2016-11-06 05:50:44

标签: matlab

我读到,在matlab中运行代码时,vector 的初始化节省了内存加快了执行时间,但是在这种情况下我不知道怎么做。

我有一个我重用的向量并在循环中添加到自身,所以我应该预先分配一个具有结束向量长度的向量。我试过了

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

2 个答案:

答案 0 :(得分:2)

正如documentation中所述,这可以简单地完成:vec = 0:6

你写的,“我读到了矢量的初始化在运行代码时节省了内存。”
这种说法不正确。请务必参阅文档以获取正确的信息 以下内容写在documentation

  

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

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

答案 1 :(得分:1)

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