2013-11-09 3 views
3

Если я оцениваю энтропию вектора стандартных нормальных случайных величин, используя функцию Matlab entropy(), я получаю ответ где-то в области 4, тогда как actual entropy должен быть 0.5 * log(2*pi*e*sigma^2), который равен приблизительно равный 1,4.Matlab 'entropy()' on Normal RVs

Кто-нибудь знает, откуда происходит несоответствие?

Примечание: Для того, чтобы сэкономить время здесь код Matlab

for i = 1:1000 
    X(i) = randn(); 
end 

'The entropy of X is' 

entropy(X) 
+1

Вы можете использовать 'X = randn (1000,1);' но: "энтропия использует 2 бункера в IMHIST для логических массивов и 256 ящиков для uint8, double или uint16 массивов." – chappjc

+1

@Masi 256 часть не связана с генерацией случайных чисел. См. Второй абзац ответа horchler. – chappjc

+0

@chappjc Я сделал и поэкспериментировал связанный ответ здесь http://stackoverflow.com/a/16529739/54964 –

ответ

3

Пожалуйста, прочтите справку (help entropy) или documentation для entropy. Вы увидите, что он предназначен для изображений и использует метод гистограммы, а не вычисляет его аналитически. Вам нужно будет создать свою собственную функцию, если вы хотите получить формулу из Википедии, но поскольку формула настолько проста, это не должно быть проблемой.

Я считаю, что причина, по которой вы получаете такие расходящиеся ответы, состоит в том, что entropy масштабирует бункеры гистограммы на количество элементов. Если вы хотите использовать такой метод оценки, вы хотите использовать hist и масштабировать ячейки по площади. См. this StackOverflow question.

+1

@ Маси: Я не совсем понимаю точный характер вашего вопроса. Трудно помочь без кода воспроизвести проблему - может быть, задать новый вопрос? В любом случае, ['hist'] (http://www.mathworks.com/help/matlab/ref/hist.html) теперь устарел, и MathWorks настоятельно рекомендует использовать [' histogram'] (http: // www .mathworks.com/help/matlab/ref/histogram.html). Поэтому, если вы используете более новую версию Matlab, вы, вероятно, должны переписать свой код, чтобы использовать 'histogram'. – horchler

+0

Можете ли вы использовать 'edge', чтобы считать энтропию аналогично« центрам »? Я думаю, что это должно быть возможно, но продолжайте получать разницу в 0,06%. –