【问题标题】:best way to count pulses in 1-D waveform in Matlab在 Matlab 中计算一维波形中脉冲的最佳方法
【发布时间】:2013-02-26 22:03:03
【问题描述】:

我有一个由方脉冲组成的信号(+ 一些噪声),这是它的一小部分:

我正在寻找一种有效且可靠的方法来计算我有多少脉冲。

这是我到目前为止所做的:

幅度有点吵,但信噪比很好,我可以阈值吗:

data = data>1;

每个脉冲的长度可能很嘈杂,所以我忽略它并使用diff 来获得导数(+ 和 -),找出有多少非零元素,然后除以 2(因为有 2每个脉冲的导数峰值)。

dd=diff(data);

num_of_pulses=length(find(diff(dd)))/2

这是最好的方法吗?我被告知不要使用diff,因为它可能太吵了......

【问题讨论】:

  • This 函数可以提供帮助。
  • 但速度较慢(因数 >20),并且除非我阈值,否则还会发现假峰。

标签: matlab signal-processing vectorization


【解决方案1】:

根据您对数据的描述,我认为这是可行的。

numberOfPulses = nnz(diff(data > 1) > 0)

您可以使用data > 1 可靠地找到脉冲样本,然后使用diff() > 0 查找从无脉冲到脉冲的转换,最后使用nnz() 对它们进行计数。

【讨论】:

  • 谢谢!虽然这与我建议的性能相当,但您提出了使用sum 而不是nnz 的想法,我得到它的速度更快!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-03
  • 1970-01-01
  • 1970-01-01
  • 2013-03-28
  • 1970-01-01
相关资源
最近更新 更多