【发布时间】:2021-12-07 05:04:24
【问题描述】:
我在 MATLAB 中的一行脚本存在一些问题,该脚本应该对错误检测到的事件进行分类。所以基本上,我有这两个变量spikemax 和spikethresh,它们包含我的数据跟踪的索引。 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