2016-09-19 3 views
0

Я была поставлена ​​задача в MatLab создания программы, которая:Получение значений максимума и минимума на графике из гистограммы в MatLab

  1. имитируется эксперимент прокатки два 6-сторонний умирает N число раз, суммируя 2 приведенных значения, а затем графически отображая частоту, в которой эти значения были получены.
  2. Имеет возможность распечатать процентное различие между наиболее частыми и наименее частыми результатами проката.

Я уже понял, как сделать первую часть:

numberOfDice = 2; %Number of dice to be rolled 
 
numberOfDots = 6; %Number of max. dots allowed on a die face 
 
numberOfRolls = 100000; %Number of times the die(s) are rolled 
 

 
%#Generate the rolls and obtain the sum of the rolls 
 
AllRoll = randi(numberOfDots, numberOfRolls, numberOfDice); 
 
sumOfRoll = sum(AllRoll, 2); 
 

 
%#Determine the bins for the histogram 
 
Bins = (numberOfDice:numberOfDots * numberOfDice)'; 
 

 
%#Build the histogram 
 
hist(sumOfRoll, Bins); 
 
title(sprintf('The Frequency of Different Sums from %d %d-sided Dice after %d Rolls', numberOfDice, numberOfDots, numberOfRolls)); 
 
xlabel(sprintf('The Sum of %d Dice', numberOfDice)); 
 
ylabel('Count');

enter image description here

Я спотыкаясь о том, как достичь 2-ой части, потому что я неопределенными как получить максимальные и минимальные значения из моей гистограммы. Возможно ли это, или мне нужно идти по этому пути другим способом? Я совсем потерян. Любая помощь будет потрясающей.

+1

1) Не используйте 'hist',' histogram' предпочтительнее в современных версиях matlab. 2) Взгляните на 'histcounts'. – tmpearce

ответ

1

Вы можете просто изменить свой существующий код, чтобы присвоить значения гистограммы переменной и использовать ее для определения процентной разницы.

histValues = hist(sumOfRoll, Bins); 

Здесь histValues имеет значения гистограммы для каждого бункера. Затем вы можете использовать эти значения, чтобы выяснить разницу и процентную разницу.

diffInOutcomes = (max(histValues) - min(histValues)) 
percentDiff = (diffInOutcomes)*100/numberOfRolls 
+0

Большое спасибо! Не думал, что так легко. – CerebralCortexan

+0

Добро пожаловать. Рад, что смог помочь – nahomyaja