MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   在向量中找到合理的(无噪声)最大元素 (https://www.labfans.com/bbs/showthread.php?t=22735)

poster 2019-12-10 16:49

在向量中找到合理的(无噪声)最大元素
 
考虑一个充满噪声元素的向量[B]V。[/B]找到合理的最大元素的最快(或任何一种)方法是什么?

例如

V = [1 2 3 4 100 1000] rmax = 4; 我当时正在考虑对元素进行排序,并找到第二个差异{即diff(diff(diff(unique(V)))}}。

编辑:对不起,延迟。

我无法发布任何代表数据,因为它包含6.15e5元素。但这是排序元素的图。

[URL="https://i.stack.imgur.com/jdJIT.jpg"][IMG]https://i.stack.imgur.com/jdJIT.jpg[/IMG][/URL]

只看图,分段线性函数可能起作用。

无论如何,关于我以前关于使用微分的猜想,这是diff(sort(V));

[URL="https://i.stack.imgur.com/ND2Gi.jpg"][IMG]https://i.stack.imgur.com/ND2Gi.jpg[/IMG][/URL]

我希望现在更加清楚。

编辑:只是要清楚,所需的“最大”值将是排序的元素图中的步骤之前的值。


回答:
[B]新答案:[/B]

根据您的排序幅度图,您的diff(sort(V))算法可能会很好地工作。您只需要为构成“太大”的排序值之间的差异选择一个阈值。然后,使用diff(sort(V))向量中超过该阈值的第一点来获取要用于V的阈值。例如:

diffThreshold = 2e5; sortedVector = sort(V); index = find(diff(sortedVector) > diffThreshold,1,'first'); signalThreshold = sortedVector(index); 如果您有兴趣使用它,另一种选择是使用[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/histc.html"]HISTC[/URL]对数据进行[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/histc.html"]装箱[/URL] 。您最终将获得高振幅的低和高幅度的垃圾箱组,介于它们之间的是稀疏的垃圾箱。然后就可以确定要算作低振幅组的一部分的仓(例如,至少包含X个计数的仓的第一组)。例如:

binEdges = min(V):1e7:max(V); % Create vector of bin edges n = histc(V,binEdges); % Bin amplitude data binThreshold = 100; % Pick threshold for number of elements in bin index = find(n < binThreshold,1,'first'); % Find first bin whose count is low signalThreshold = binEdges(index); [B]旧答案(供后代使用):[/B]

找到“合理的最大元素”完全取决于您对[I]合理[/I]的定义。您可以通过多种方式将一个点定义为[I]离群值[/I] ,例如仅选择一组阈值并忽略定义为“合理”的所有内容。假设您的数据具有正态分布,则可以使用简单的数据驱动阈值方法使用[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/mean.html"]MEAN[/URL]和[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/std.html"]STD[/URL]函数从向量V去除异常值:

nDevs = 2; % The number of standard deviations to use as a threshold index = abs(V-mean(V))


所有时间均为北京时间。现在的时间是 23:25

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.