fm = get_fimath();

idx = fi(1,0,1,0,fm);
a = (idx+fi(2,0,2,0,fm))*fi(1/3,0,16,17,fm);
k = fi(a,0,17,0,fm)

function fm = get_fimath()
	fm = fimath('RoundingMethod', 'Floor',...
	     'OverflowAction', 'Wrap',...
	     'ProductMode','FullPrecision',...
	     'MaxProductWordLength', 128,...
	     'SumMode','FullPrecision',...
	     'MaxSumWordLength', 128);
end

Этот код генерируется при использовании Matlab Coder. Я хочу знать, почему k равно нулю? Это из-за деления 1/3?

ОТВЕЧАТЬ

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech , ME, M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

Это как научная нотация

это краткий ответ на вопрос «Почему FractionLength может быть больше, чем WordLength?».

Длинный ответ следующий.

Концепция двоичной точки очень полезна для начального понимания типов с фиксированной точкой. Точно так же понятие десятичной точки полезно для понимания значений, выходящих за рамки целых чисел. Но использование десятичных точек становится очень громоздким для очень больших или очень маленьких чисел. Чтобы упростить представление очень больших или очень маленьких значений, научная запись очень ценна.

verySmallNumber = 3e-200;
veryBigNumber = 7e123;

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

Y = мантисса .* 10.^степень

Фиксированная точка следует той же концепции, за исключением того, что

  • база 2
  • мантисса должна быть целым числом
  • показатель степени фиксирован, т. е. является частью типа переменных и не меняется в течение всего срока действия переменной

Y = intMantissa .* 2^FixedExponent

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ