如何在循环中向向量添加元素

时间:2014-04-14 21:59:40

标签: matlab matrix vectorization cell-array

假设我有一个单元格数组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 个答案:

答案 0 :(得分:1)

对于给定的raweeg

单元格,

对此进行矢量化

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

这称为logical indexing

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


P.S。代码中的问题是for循环语句,它应该是:

for i = 1:length(raweeg{1,1}(:,1))

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

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