【问题标题】:findchangepts does not dectect some changesfindchangepts 未检测到某些更改
【发布时间】:2017-09-15 07:27:07
【问题描述】:

我正在编写从加速度计获取信号的代码,并使用 TVD 算法对信号进行去噪。正如我们在下图中看到的那样,我设法做到了:

但我想检测峰值,我认为我可以在 MATLAB 中使用 findchangepts 函数,但是当我运行它时,我有以下内容:

我们可以看到它没有检测到峰值。有谁知道函数中的任何设置,或者在峰值内去噪的方法?

【问题讨论】:

  • docs: "findchangepts(x) 返回 x 的平均值变化最显着的 index。` 使用 findchangepts(x,'MaxNumChanges',5) 指定多个点。或者使用findpeaks。在问这里之前总是做一个简单的文档搜索......
  • 感谢@Wolfie,我也进行了该搜索,但问题是我现在无法确定确切的更改数量,因为代码将用于多个信号,并且在信号,可能彼此不同。此外,当我使用 findpeaks 函数时,它会为我提供所有峰值,在照片中您可以看到的信号中,虽然看起来不是,但它是 5402 个峰值,这就是我要求更好过滤的原因。

标签: matlab signal-processing noise-reduction


【解决方案1】:

我设法通过 findpeaks 函数做到这一点,如下所示:

[pks, locs] = findpeaks(x,'MinPeakProminence',0.25*max(x),'MinPeakDistance',50);

并让 x 通过一系列包络滤波器和低通滤波器:

[yupper,ylower] = envelope(x)

希望对某人有用

【讨论】:

  • 我不认为这对任何人都非常有用,这是一个非常广泛的答案(“这是我发现以我想要的方式过滤我的特定数据的好方法”)到一个非常广泛的问题(“我想以某种方式过滤这些数据,我试过的这个东西没有用,这是一张没有示例数据的图像”)。您可以尝试改进问题,以更清楚地说明您想要实现的目标、原因、方式、示例数据、您尝试过的代码......
猜你喜欢
  • 2023-04-09
  • 1970-01-01
  • 2015-01-15
  • 1970-01-01
  • 1970-01-01
  • 2013-11-12
  • 1970-01-01
  • 1970-01-01
  • 2016-07-09
相关资源
最近更新 更多