有没有办法动态添加元素,同时删除其中的一些元素?最好是在MATLAB中。
例如,我们说我正在传输来自传感器的数据。由于它将永远流式传输,我想仅保留向量的最后100个样本/元素。
答案 0 :(得分:2)
您可以在python中尝试Queue
模块:
from Queue import Queue
q=Queue()
to enque at back : q.put(x)
to deque from front : q.get()
您可以在python中使用deque
中的collections
(如果您有一些提前要求):
from collections import deque
d = deque([])
to enque at back : d.append(x)
to enque at front : d.appendleft(x)
to deque from back : d.pop()
to deqeue from front : d.popleft()
答案 1 :(得分:-1)
在Matlab中没有正式的queue数据结构,但您所描述的基本情况可以通过巧妙地使用索引和max
来实现:
d = []; % Allocate empty array
n = 100; % Max length of buffer/queue
% A loop example for illustration
for i = 1:1e3
x = rand(1,3); % Data to append
d = [d(max(end-n+1+length(x),1):end) x]; % Append to end, remove from front if needed
end
以上假设附加数据x
是一个长度为0到n
的行向量。您可以轻松地将其修改为附加到前面等。它也可以转换为函数。
您还可以在MathWorks文件交换中找到实现各种队列形式的类,例如this one。