【问题标题】:Sorting out erroneous events in MATLAB using a for loop?使用 for 循环在 MATLAB 中对错误事件进行排序?
【发布时间】:2021-12-07 05:04:24
【问题描述】:

我在 MATLAB 中的一行脚本存在一些问题,该脚本应该对错误检测到的事件进行分类。所以基本上,我有这两个变量spikemaxspikethresh,它们包含我的数据跟踪的索引。 spikemax 在我的数据跟踪中包含正确的时间点索引,但 spikethresh 仍然有太多值,我需要对其中的一些进行排序。 规则应该是,spikethresh 的每个值总是在下一个spikethresh 之前跟一个spikemax。我添加了一个图像,其中显示了红色和绿色的点,我的两个变量最终在数据跟踪中指示。

我的想法是运行一个 for 循环,其条件是从 spikethresh 中删除值以更新变量。在代码中,我添加了一些示例值,这些值简单地显示了什么不起作用。 这里的输出是[15029;15055;15066;15339],但我想得到

spikethresh = [15029;15066;15339]

如何修复我的代码以产生所需的输出?

这是我的代码:

% Example variables:
spikethresh = [15029; 15038;15055; 15060; 15066; 15339];
spikemax= [15034; 15072; 15344];

spikethresh_corr = spikethresh ;

for i = 1:length(spikemax)-1
    if (spikethresh(i+1)-spikethresh(i)) < (spikemax(i)-spikethresh(i))
        spikethresh_corr(i) = [] ; 
    end
    spikethresh = spikethresh_corr ;
end 


% Results in spikethresh = [15029;15055;15066],
% but I am trying to get [15029;15066;15339]

【问题讨论】:

  • filloutliers() 有帮助吗? mathworks.com/help/matlab/ref/filloutliers.html 我不确定我是否理解正确,但这是一个随时可用的检测器,我认为只需在此处和那里进行一些调整即可用于您的目的。
  • @GuarneerFPS:我不确定 filloutliers 函数是否适用于我的目的,因为我没有应用一般规则,而是从一个变量到另一个变量的条件,但我会看看进入它,谢谢!

标签: arrays matlab loops for-loop


【解决方案1】:

您的代码中有两个问题:

  1. (spikethresh(i+1)-spikethresh(i)) &lt; (spikemax(i)-spikethresh(i)) 并不能真正测试您的状况。你要测试的是spikethresh(i+1) &lt; spikemax(i)。也就是说,如果spikethresh 中的下一个值小于spikemax 中的当前值,则我们不需要spikethresh 中的当前值。

  2. 您的测试正好是 2 次(length(spikemax)-1 是 2)。但是您可能需要删除更多元素。对于每个i,您必须重复应用您的测试,直到它不再满足(在当前spikemax(i) 之前没有更多值要删除)。

这就是您的代码的样子:

spikethresh = [15029; 15038; 15055; 15060; 15066; 15339];
spikemax = [15034; 15072; 15344];

for i = 1:length(spikemax)-1
   while spikethresh(i+1) < spikemax(i)
      spikethresh(i) = [];
   end
end

这导致spikethresh = [15029; 15066; 15339]

【讨论】:

  • 谢谢!这很好,解决了我首先犯的逻辑错误。最后,我注意到最初给我变量spikethresh 的部分有一些其他问题,所以我完全重写了它。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2019-03-14
  • 1970-01-01
  • 2022-06-14
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2017-08-16
  • 2018-10-22
相关资源
最近更新 更多