我是Matlab的新手。负责加速程序。我肯定有更好的方法来执行以下语句:
for i = 2:length(WallId)
if WallId(i) ~= WallId(i-1)
ReducedWallId = [ReducedWallId;WallId(i)];
ReducedWallTime = [ReducedWallTime;WallTime(i)];
GroupCount = [GroupCount;tempCount];
tempCount = 1;
else
tempCount = tempCount +1;
end
end
我可以将各种变量预分配给“ length(WallId)”,但是完成后如何处理多余的变量?我关心的?
最佳答案
idx = find([true diff(WallId) ~= 0]);
ReducedWallId = WallId(idx);
ReducedWallTime = WallTime(idx);
GroupCount = diff([idx numel(WallId)+1]);
假设您想要的是WallId和WallTime中唯一数据的摘要,那么您应该
确保首先对WallId进行排序。您可以重新组织WallTime进行匹配,如下所示:
[WallId, ind] = sort(WallId);
WallTime = WallTime(ind);
另外,只要WallTime匹配,则WallTime匹配时,您只会得到正确的答案。
关于optimization - Matlab:优化这个吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7609916/