обрезать целое число от действительного числа с помощью matlab - PullRequest
2 голосов
/ 22 августа 2010

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

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

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

Ответы [ 2 ]

4 голосов
/ 22 августа 2010

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

>>fix(255/64)
    ans =
          3

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

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

S = double(imread('image0286.jpg'))/64
0 голосов
/ 22 августа 2010

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

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

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

...