【问题标题】:How to add elements to a vector in a loop如何在循环中向向量添加元素
【发布时间】:2014-04-14 21:59:39
【问题描述】:

假设我有一个单元格数组raweeg,其中每个单元格都是一个矩阵,第一列是时间点,第二列是一些标记。当标记不等于-1时,我想创建一个向量来存储时间点。我找到了一种不优雅(且不起作用)的方法来创建大小为 1x1 的零向量,然后在循环中附加以下值。

P.S.:正好有96个非“-1”的值和对应的时间点。

startpoints = zeros(1,1);

for i = length(raweeg{1,1}(:,1))
   if raweeg{1,1}(i,2) ~= -1
   startpoints(end+1,1) = raweeg{1,1}(i,1); 
   end
end

谢谢

【问题讨论】:

  • 有答案吗?错误标识为缺少1:,并给出了矢量化解。如果可行,请接受。谢谢! :)
  • 谢谢!我是系统新手,有点混乱。

标签: matlab matrix vectorization cell-array


【解决方案1】:

对于raweeg 的给定单元格,像这样对其进行矢量化:

startpoints = raweeg{1,1}(raweeg{1,1}(:,2) ~= -1, 1);

这叫logical indexing

请确保您的标记不是通过浮点计算生成的,否则比较可能会经常失败。


附:您代码中的问题是for 循环语句,应该是:

for i = <b>1:</b>length(raweeg{1,1}(:,1))

或者更好,for i = 1:size(raweeg{1,1},1)

没有“1:”部分,它只有一个迭代,最后一行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 2019-12-31
    • 2020-03-20
    • 1970-01-01
    • 2022-07-29
    • 2021-01-18
    • 2014-08-01
    相关资源
    最近更新 更多