Предельные значения данных отображаются в гистограмме MATLAB - PullRequest
1 голос
/ 03 февраля 2012

У меня есть вектор, для которого я хочу напечатать гистограмму данных. Эти данные варьируются от -100 до +100. Количество данных вокруг внешних краев незначительно, и поэтому я не хочу их видеть. Меня больше всего интересуют данные от -20 до +20.

1.) Как я могу ограничить это окно для печати на моей гистограмме?

Количество данных, которое у меня есть, равно нулю от количества данных, которые у меня есть где-либо в наборе данных, как минимум, 10: 1. Когда я печатаю гистограмму, компоновка частоты элемента теряется, потому что она превосходит нумерацию 0.

2.) Есть ли способ, которым я могу масштабировать количество значений 0 до трехкратного числа -1 записей?

Я ожидаю экспоненциального падения этого набора данных (в целом), и поэтому трехкратная частота -1 легко позволит мне увидеть частоту других данных.

Ответы [ 4 ]

2 голосов
/ 03 февраля 2012

Вы также можете просто выбросить любые значения вне диапазона [-20,20], используя

subsetData=data(abs(data)<=20)
2 голосов
/ 03 февраля 2012

Вы можете использовать что-то вроде

binCenters = -20:5:20;
[N,X] = hist(V,binCenters);

N = N./scalingVector;
bar(X(2:end-1),N(2:end-1));

Обратите внимание, что код исключает крайние значения N и X из линейчатой ​​диаграммы, так как они содержат количество значений меньше -20 и большечем 20. Кроме того, построив scalingVector соответственно, вы можете масштабировать N, как вам угодно.

1 голос
/ 03 февраля 2012

1) Вы можете ограничить диапазон гистограммы, который вы видите на графике, просто установив пределы по осям X:

xlim([-20 20])

Установка бинов в команде Hist хорошая, но помните, что все значения за пределами биновпопасть в самую левую и правую корзину.Так что вам все равно нужно будет установить пределы осей.

2) Если между значениями в разных ячейках есть большая разница, один из способов - преобразовать значения по осям Y в логарифмический масштаб.К сожалению, просто установка осей Y в лог (set(gca,'YScale','log')) не работает для гистограммы.Рассчитайте гистограмму с помощью hist или histc (в зависимости от того, хотите ли вы указать центры или ребра ячеек) и запишите значения:

[y, xbin] = hist(data);
bar(xbin, log2(y) ,'hist')
0 голосов
/ 03 февраля 2012

Гистограмма имеет несколько разных способов вызова.Я настоятельно рекомендую вам прочесть документацию по функции (doc hist)

. Вам нужно добавить пользовательский диапазон в корзину гистограмм.Это немного зависит от того, сколько лотков вы хотите, но что-то вроде этого будет работать.

Data=randn(1000,1)*20;
hist(Data,-20:20);

Вы также можете, если хотите, изменить частоту бинов.Вы также можете изменить ось так, чтобы фокусироваться только на диапазоне от -20 до 20, используя команду xaxis ([- 20 20]).Вы также можете игнорировать ячейку в 0, используя yaxis и ограничивая значения, чтобы исключить ячейку 0.Не зная, что именно вы хотите, я могу только дать вам предложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...