【问题标题】:How to create a FIFO queue to a cell array of cell arrays in MATLAB?如何在 MATLAB 中为元胞数组的元胞数组创建 FIFO 队列?
【发布时间】:2015-02-02 13:43:07
【问题描述】:

假设我们有一个元胞数组,称为 Q,一个 ,每个元胞都是一个元胞数组,如下所示:

问{1}{1}

ans =

 0   451     0

等等。问题是,我想创建一个 FIFO 队列,以便每次一个接一个地“清除”每个单元并将每个单元的内容发送到另一个函数(在上面的单元中值 0 451 0)。必须使用 FIFO 队列,并且仅此而已,因为它是特定算法实现的一部分。 如果可能的话,我宁愿不要在 Matlab 中使用 Java,比如 LinkedList,因为我已经在其他主题中阅读过。

我怎么能用这个单元阵列的单元阵列来做那个 FIFO 队列?有什么想法吗?任何帮助将不胜感激。

【问题讨论】:

    标签: matlab queue fifo cell-array


    【解决方案1】:

    取第一个值

    input = Q(1);  % or Q{1} depending on requirements
    

    清除第一个值:

    Q(1) = []; % Q will now be, e.g. 1x3255 cell
    % Q(1) is now the old Q(2)
    

    这需要是 () 而不是 {} - 后者只会清空 Q(1) 的内容(Q 将保持 1 x 3256)。

    将附加值添加到队列末尾:

    Q(end+1) = newdata; 
    

    【讨论】:

    • 好的,谢谢,你在这个问题上有一些非常好的方法。我想问你两件事:第一,这个解决方案可以更像 FIFO 吗?意思是,分别使用队列 Q 的第一个和最后一个元素的头和尾变量?另外,您能帮我看看如何将新数据实际添加到队列末尾吗?我认为它比这个一般性陈述要复杂得多 Q(end+1) = newdata;因为我们必须处理一个元胞数组的元胞数组。提前致谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 2011-02-07
    • 2017-10-02
    • 2013-08-09
    相关资源
    最近更新 更多