所以我试图根据其中一列中的值来分离数组...问题是我正在使用的for循环有效,但是速度非常慢。我可以站起来喝一杯咖啡,在我的机器上完成时吃三明治。
w = waitbar(0,'Separating Velocity values based on processor address');
for i = 1:length(timeDEC);
if paddrDEC(i) == 0
timeU(i) = timeDEC(i);
velU(i) = Velocity(i);
end
if paddrDEC(i) == 1
timeV(i) = timeDEC(i);
velV(i) = Velocity(i);
end
waitbar(i/length(timeDEC),w);
end
close(w);
处理器地址是二进制的,因此只有2个选项(U和V),我需要适当的时间值。
答案 0 :(得分:0)
尝试逻辑索引,如下所示:
timeU = timeDEC(paddrDEC==0);
velU = Velocity(paddrDEC==0);
timeV = timeDEC(paddrDEC==1);
velV = Velocity(paddrDEC==1);
答案 1 :(得分:-3)
您可以使用查找拆分。它非常快。
以下是在C#中使用它的示例:
IList<int> list = new List<int> { 1, 2, 3, 4, 5, 6 };
var lookup = list.ToLookup(num => num % 2 == 0);
IEnumerable<int> trueList = lookup[true];
IEnumerable<int> falseList = lookup[false];
这个想法是你可以根据谓词(真假场景)拆分列表。