我有一个二维数组,表示光子在两个通道中的到达时间,该数组包含一行关于到达时间的信息,另一行包含关于时间戳的信息
data = stream.getData();
timestamps = data.getTimestamps();
channels = data.getChannels();
timetags = [timestamps; channels];
t= [timetags];我需要一个开始-多次停止测量,所以当在通道1中有点击时,我需要在通道2的每个时间戳中减去该点击的时间戳,直到通道1中的下一次点击,依此类推。为此,我使用了for cicle:
for i=1:length(t)
if t(2,i)==1
t(1,i:end)=t(1,i:end)-t(1,i)
end
end但它是相当慢的。有没有更快的方法呢?
发布于 2021-07-21 17:29:11
您可以使用t(2,:)==0创建一个在您的条件下为真的数组,然后当此为真时,t(1,:).*(t(2,:)==0)将提供0或当前时间戳。
因此,如果t(2,:)是非递减的,您应该能够执行以下操作
t(1,:) = t(1,:) - cummax( t(1,:) .* (t(2,:)==0) );https://stackoverflow.com/questions/68466812
复制相似问题