在MATLAB中有一种方法可以定义一个变量say runningValue 并将值连续不断地推送到它上面吗?
我一直在做的是这样的事情:
runningValue = 0;
for j=1:length(someVector)
...
runningValue(end+1) = (some value);
...
endfor
但这会强制领先0.我知道在完成所有工作之后我可以放 j(1)= []; 但我想知道是否有更优雅的方法来做到这一点
请注意, runningValue 变量的长度不是先验已知的;特别是,我们没有填充 length(someVector)元素,参考上面的伪代码, j 索引是没有用的。
答案 0 :(得分:1)
除了将runningValue初始化为空之外,您还可以尝试减少附加数量,这是一个O(n)操作。不是在每个循环上附加元素,而是在数组满时将其大小加倍。这样,您可以将附加数量从n减少到log(n):
runningValue = [];
len = 0;
for j = 1:n
if (j > len)
runningValue = [runningValue zeros(size(runningValue))];
len = length(runningValue);
end
runningValue(j) = (some value);
end
runningValue(j+1:len) = []; % If you need to remove the extra zeros
答案 1 :(得分:0)
您可以使用现有向量和另一个元素简单地构造一个新向量:
runningValue = [];
for j=1:5
runningValue = [runningValue i]; % i can be the element you want to append to the vector
end
此代码将输出:
runningValue =
1 2 3 4 5