首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在matlab中高效地从数组中减去一个值

在matlab中高效地从数组中减去一个值
EN

Stack Overflow用户
提问于 2021-07-21 17:05:17
回答 1查看 35关注 0票数 0

我有一个二维数组,表示光子在两个通道中的到达时间,该数组包含一行关于到达时间的信息,另一行包含关于时间戳的信息

代码语言:javascript
运行
复制
  data = stream.getData();
    timestamps = data.getTimestamps();
    channels = data.getChannels();
    timetags = [timestamps; channels];
    t= [timetags];

我需要一个开始-多次停止测量,所以当在通道1中有点击时,我需要在通道2的每个时间戳中减去该点击的时间戳,直到通道1中的下一次点击,依此类推。为此,我使用了for cicle:

代码语言:javascript
运行
复制
for i=1:length(t)
    if t(2,i)==1
        t(1,i:end)=t(1,i:end)-t(1,i)
    end
end

但它是相当慢的。有没有更快的方法呢?

EN

回答 1

Stack Overflow用户

发布于 2021-07-21 17:29:11

您可以使用t(2,:)==0创建一个在您的条件下为真的数组,然后当此为真时,t(1,:).*(t(2,:)==0)将提供0或当前时间戳。

因此,如果t(2,:)是非递减的,您应该能够执行以下操作

代码语言:javascript
运行
复制
t(1,:) = t(1,:) - cummax( t(1,:) .* (t(2,:)==0) );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68466812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档