Как отобразить значения в массиве в зависимости от того, сколько раз эти значения появляются в Matlab?
У меня есть набор возрастов (более 10000 из них), и я хочу построить график с возрастом от 20 до 100 на оси x, а затем количество раз, когда каждый из этих возрастов появляется в данных на оси y. Я пробовал несколько способов сделать это, и я не могу понять это. У меня также есть некоторые другие данные, которые требуют, чтобы я построил значения в зависимости от того, сколько раз они встречаются, поэтому любые советы о том, как это сделать, будут высоко оценены.
Я довольно новичок в Matlab, поэтому было бы здорово, если бы вы могли объяснить, как работают вещи в вашем ответе, а не просто набрать какой-то код.
Благодарю.
РЕДАКТИРОВАТЬ:
Поэтому я напечатал гистограмму (Age, 80), потому что, насколько я понимаю, на графике будут отображаться значения в Age на гистограмме, разделенной на 80 столбцов (по 1 для каждого возраста). Вместо этого я получаю это:
Столбцы не выровнены, и они явно не равны 1 на возраст и не отражают число раз, когда каждый возраст встречается на оси y.
2 ответа
Вы должны использовать histogram()
и это правильно.
Давайте посмотрим на примере.
Я извлекаю 100 возрастов от 20 до 100:
ages=randsample([20:100],100,true);
Теперь я звоню histogram()
таким образом:
h=histogram(ages,[20:100]);
где h
является объектом гистограммы, и это также покажет следующий график:
Однако это может выглядеть легко из-за того, что мой возраст всегда находится в диапазоне 20:100, поэтому он не будет содержать никаких других значений. Если ваш вектор, как вместо этого, содержит также возраст не в диапазоне 20:100, вы можете указать дополнительную опцию 'BinLimits'
в качестве третьего входа в histogram()
как это:
h=histogram(ages,length([20:100]),'BinLimits',[20:100]);
и эта опция строит гистограмму, используя значения в ages
которые падают между 20 и 100 включительно.
Примечание: осматривая h
Вы можете увидеть и / или отредактировать некоторые свойства своей гистограммы. Атрибут (поле) такого объекта, который вас может заинтересовать - это Значения. Это вектор длиной 80 (в нашем случае, так как мы работаем с 80 бинами), в котором i-й элемент - это количество элементов, это i-й бин. Это поможет вам подсчитать вхождения (на тот случай, если они понадобятся вам для продолжения анализа).
Как сказал Луис в комментариях, hist
это путь Вы должны указать ребра ячеек, а не количество ячеек:
ages = randi([20 100], [1 10000]);
hist(ages, [20:100])
Это то, что ты искал?