這裏的另一個問題:Matlab的:優化這個(PT 2)
ValidFirings = ((DwellTimes > 30/(24*60*60)) | (GroupCount > 1));
for i = length(ValidFirings):-1:2
if(~ValidFirings(i))
DwellTimes(i-1) = DwellTimes(i)+DwellTimes(i-1);
GroupCount(i-1) = GroupCount(i)+GroupCount(i-1);
DwellTimes(i) = [];
GroupCount(i) = [];
ReducedWallTime(i) = [];
ReducedWallId(i) = [];
end
end
看來,目的是總結基於傳感器發射是否被認爲是有效的「dwelltimes」。所以我有一個傳感器點火的向量,即如果當前行未被標記爲有效,Im向後走向並且總結到前一行。
我可以在C/C++中看到它,但我不知道如何將它轉換爲更好的Matlab向量表示法。就目前來看,這個循環速度很慢。
編輯: 我可以使用某種形式的DwellTimes = DwellTimes(cumsum(ValidFirings))嗎?
我得到第一部分:刪除'清除記憶'部分。我沒有看到第二部分發生了什麼。看起來它會將ValidFirings向量應用於DwellTimes等值之前的值。這些價值觀將不再適用。 – ethrbunny
查找邏輯下標。它和'DwellTimes = DwellTimes(find(ValidFirings));'等一樣,所以你只保留了'ValidFirings == true'的部分。 – Nzbuu