2016-05-05 2 views
1

Я использую следующий код, чтобы найти положительный фактор:Почему я получаю отрицательные значения, если я делю два положительных?

[U S V] = svd(image, 'econ'); % calculate the SVD of the image 

level = 4; 
factorJND = jnd(image, level) ; % calculate the JND values of the image 
f = factorJND/abs(U*V) % divide the JND value by the multiplication of U and V matrices(they have the same size) 

Зная, что factorsJND и абс (U * V) являются положительными, это дает мне положительные и отрицательные числа !! Я не знаю почему!

f = -7.2851 6.4520 
    -7.7509 5.5236 
    -7.3374 4.1684 
    -5.6905 5.0915 

Я даже пытаюсь сделать:

f = abs(factorsJND)/abs(U*V) 

Но все-таки дает мне тот же результат, в то время как он должен быть все положительные значения!

+0

Я не вижу, где ваши назначения 'U',' S' и 'V'. – arrowd

+0

U, V и S - сингулярные векторы и значение, которые обычно возникают при применении разложения сингулярных значений на изображении. – Youssi

+0

Вы хотите '/' или '. /'? '/' в основном '* inv (...)' – Dan

ответ

2

Вы используете matrix right division() вместо an element-wise division (./). Из-за этого возможно, что результат будет иметь отрицательные значения для двух входов, в которых все значения сами являются всеми положительными значениями. Скорее всего, это будет элементное разделение.

f = factorJND ./ abs(U*V); 
+0

Да @Suever, вы правы. Я не обращал на это внимания. Спасибо – Youssi

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