обрезать целое число из действительного числа с помощью Matlab

пожалуйста, помогите мне отрезать целое число от действительного числа без округления до ближайших целых чисел в Matlab, например: если у меня 255/64 = 3,98, мне нужно всего 3, а не 4. Я использовал исправление в своей программе, но не работает. моя треска:

S=imread('image0286.jpg')/64; 
   disp(fix(S);

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


person zenab    schedule 22.08.2010    source источник


Ответы (2)


fix делает то, что вы хотите.

>>fix(255/64)
    ans =
          3

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

РЕДАКТИРОВАТЬ: Imread возвращает значения как uint8, и деление в этом классе, похоже, выполняет округление, которое вам не нужно. попробуйте преобразовать в удвоение перед делением

S = double(imread('image0286.jpg'))/64
person second    schedule 22.08.2010
comment
Мне нужно уменьшить цветовое пространство с 256 до 4, которое я делю на изображение после его чтения на 64, когда я пытаюсь вычислить гистограмму цвета, я обнаружил, что цвет становится 5, а не 4, потому что он округляется до ближайших целых чисел. - person zenab; 22.08.2010
comment
нп. рассмотрите возможность голосования / принятия хороших ответов на ваши вопросы, так как это считается хорошим этикетом. ср. @Jonas прокомментировал ваш вопрос. - person second; 22.08.2010

floor(x) делает это, но остерегайтесь отрицательных чисел.

но fix тоже должно работать.

Также обратите внимание, что imread может возвращать массив byte или int, а не числа с плавающей запятой. поэтому ваше деление может быть int-division и автоматически усекаться без необходимости использования fix или floor.

person Sanjay Manohar    schedule 22.08.2010
comment
Я пытаюсь вычислить пол в своей программе, также он округляется до ближайшего целого числа, пожалуйста, мне нужно получить, например: 3.1=3 ; 3,2=3; 3,5=3; 3,7=3; 3,9=3 - person zenab; 22.08.2010
comment
если это так, вы делаете что-то не так. пожалуйста, покажите нам вывод S(1,:). возможно, это уже округлено. - person Sanjay Manohar; 24.08.2010