【问题标题】:Extract data from plot using "Brush/Select Data" in Matlab使用 Matlab 中的“画笔/选择数据”从绘图中提取数据
【发布时间】:2019-09-21 10:38:29
【问题描述】:

在我的情节中,我有日期时间格式的 x 轴,y 是相应的观察值。有几组异常我可以直观地识别出来。我尝试使用图中的“画笔/选择数据”工具选择异常,但是当我尝试在剪贴板上复制数据并粘贴到记事本中时,数据不是日期时间格式,我无法解释。

我想从图中选择数据并从数据集中删除索引。我提供了我从画笔工具中复制的数据样本。

56.5868518518519    463.32834344035
56.6596759259259    463.337
56.6603240740741    463.335
56.6608217592593    463.326 

谢谢

【问题讨论】:

    标签: matlab plot figure brush


    【解决方案1】:

    你看过rmoutliers(A)吗?如果您只需要删除异常值,则此功能将完全做到这一点。

    如果你因为某种原因不能使用这个功能,你可以使用这个:

    % Compute the median absolute difference
    meanValue = mean(vector)
    % Compute the absolute differences.  It will be a vector.
    absoluteDeviation = abs(vector - meanValue)
    % Compute the median of the absolute differences
    mad = median(absoluteDeviation)
    % Find outliers.  They're outliers if the absolute difference
    % is more than some factor times the mad value.
    sensitivityFactor = 6 % Whatever you want.
    thresholdValue = sensitivityFactor * mad;
    outlierIndexes = abs(absoluteDeviation) > thresholdValue
    % Extract outlier values:
    outliers = vector(outlierIndexes)
    % Extract non-outlier values:
    nonOutliers = vector(~outlierIndexes)%Compute the median absolute difference
    

    感谢this guy,但它是一种非常简单的方法,应该完全满足您的需要

    【讨论】:

    • 感谢@toms 提出该功能,但该功能仅在R2018b 中引入。实际上,我已经编写了自己的异常值检测算法,但它无法捕获这些集群。
    • @phj 你应该说明你使用的是哪个版本的matlab
    • @pkj 我编辑了答案并添加了您可以使用的代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 2013-06-18
    相关资源
    最近更新 更多