2013-11-08 4 views
-4

Я пытаюсь написать оптимальное квантование для IP. Я новичок в Matlab и в этом коде, я пытаюсь пройти каждый пиксель в каждом интервале Z, умножить его на гистограмму и суммировать, поэтому я могу рассчитать оптимальный Q.Показатели matlab не в диапазоне?

проблема: Attempted to access hist(257);index out of bounds because numel(hist)=256.

for i=1:K, 

    for j=(Z(i)):Z(i+1), 

     sum1=(j)*hist(j+1)+sum1; 
     count=count+hist(j+1); 

    end 
end 
+2

Исключение действительно очевидно, вы получаете доступ к 'hist (257)', который не существует. – Daniel

ответ

2

ошибка говорит вам, что вы не можете получить доступ к hist(257), поскольку массив hist имеет только 256 элементов в нем. Обратите внимание, что hist также является встроенным именем функции, поэтому вам действительно стоит подумать о том, чтобы дать вашей переменной другое имя.

Как решить:

тщательно Подумайте о вашем коде, и что вы пытаетесь достичь. Что такое Z. hist и K? Самое большое значение j может (=Z(i+1))? Это значение, с которым вы индексируете hist, и, видимо, hist не так уж и много. Какова же форма каждой переменной?

+0

K = 2^N; N - количество бит . В начале Z разделено равным Z = z0: D: zk; z0 = 0, zk = 255 (шкала серого). Наибольшее значение Z равно 255, а K + 1 = numel (Z). Поэтому я не понимаю, как гист достигает 257? numel (hist) = 256 –

+0

Это звучит озадачительно. Когда код останавливается, каковы значения 'i',' j', 'Z (i + 1)'? Есть ли другой код, который вы не показываете, который изменяет значение 'Z'? – Floris

+0

решил это, вы были правы, проблема была не в этом цикле. –

Смежные вопросы