Matlab - извлечение значений из бокса - PullRequest
4 голосов
/ 16 марта 2012

Я хочу извлечь значения из встроенной функции boxplot. В A1 есть три очень больших значения (1000000), в то время как правильное максимальное значение - 273.

a = boxplot(A1)

a =

  173.0043
  174.0028
  175.0033
  176.0027
  177.0032
  178.0027
  179.0031

Я попробовал это, но я не знаю, что это за значения, сами по себе они не являются ни показателями выбросов, ни индексом выбросов.

findobj(gcf,'tag','Outliers'); возвращает только 179,0031

Как извлечь выбросы или их индексы из ящика?

1 Ответ

9 голосов
/ 16 марта 2012

BOXPLOT возвращает массив дескрипторов для различных графических объектов.

При параметрах по умолчанию (plotstyle установлено на outline и т. Д.) На выходе получается массив х 7 х M, где M - числогруппы боксов, каждая из которых имеет следующие 7 маркеров:

  1. Верхний Вискер
  2. Нижний Вискер
  3. Верхний Смежное значение
  4. Нижнее Смежное значение
  5. Box
  6. Медиана
  7. Выбросы

При разных параметрах boxplot может возвращать разное количество дескрипторов, поэтому лучше найти то, что вам нужно, по тегу.

Для извлечения данных вам необходимо получить доступ к свойству Data конкретного объекта, если это свойство существует.

h = findobj(gcf,'tag','Outliers');

xdata = get(h,'XData');
ydata = get(h,'YData');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...