Можно создать fi объекты с помощью программного обеспечения Fixed-Point Designer™ любым из следующих способов:
Можно использовать fi функция конструктора, чтобы создать fi объект.
Можно использовать sfi функция конструктора, чтобы создать новый fi со знаком объект.
Можно использовать ufi функция конструктора, чтобы создать новый fi без знака объект.
Можно использовать любой fi функции конструктора, чтобы скопировать существующий fi объект.
Начать, создать fi объект с типом данных по умолчанию и значением 0:
a = fi(0)
a =
0
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 15
Этот синтаксис конструктора создает fi со знаком объект со значением 0, размером слова 16 битов и дробной длиной 15 битов. Поскольку вы не задавали fimath свойства объектов в fi конструктор, получившийся fi объект a не имеет никакого локального fimath.
Видеть весь из fi, sfi, и ufi синтаксисы конструктора, обратитесь к соответствующим страницам с описанием.
Для получения информации о формате отображения fi объекты, относитесь, чтобы Просмотреть Данные Фиксированной точки.
Следующие примеры показывают вам несколько различных способов создать fi объекты. Для другого, более основных примеров построения fi объекты, смотрите раздел Examples следующих страниц с описанием функции конструктора:
Примечание
fi конструктор создает fi объект с помощью RoundingMethod из Nearest и OverflowAction из Saturate. Если вы создаете fi от значений с плавающей точкой, RoundingMethod по умолчанию и OverflowAction настройки свойства не используются.
Можно использовать имя свойства / пары значения свойства, чтобы установить fi и fimath свойства объектов, когда вы создаете fi объект:
a = fi(pi, 'RoundingMethod','Floor', 'OverflowAction','Wrap')
a =
3.1415
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 13
RoundingMethod: Floor
OverflowAction: Wrap
ProductMode: FullPrecision
SumMode: FullPrecisionВы не должны задавать каждый fimath свойство объекта в fi конструктор. fi возразите использует значения по умолчанию для всего незаданного fimath свойства объектов.
Если вы задаете по крайней мере один fimath свойство объекта в fi конструктор, fi объект имеет локальный fimath объект. fi возразите использует значения по умолчанию для остающегося незаданного fimath свойства объектов.
Если вы не задаете fimath свойства объектов в fi конструктор Object, fi возразите использованию fimath по умолчанию значения.
Можно использовать numerictype объект задать fi объект:
T = numerictype
T =
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 15
a = fi(pi, T)
a =
1.0000
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 15
Можно также использовать fimath объект с numerictype объект задать fi объект:
F = fimath('RoundingMethod', 'Nearest',... 'OverflowAction', 'Saturate',... 'ProductMode','FullPrecision',... 'SumMode','FullPrecision')
F =
RoundingMethod: Nearest
OverflowAction: Saturate
ProductMode: FullPrecision
SumMode: FullPrecision
a = fi(pi, T, F)
a =
1.0000
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 15
RoundingMethod: Nearest
OverflowAction: Saturate
ProductMode: FullPrecision
SumMode: FullPrecision
Примечание
Синтаксис a = fi(pi,T,F) эквивалентно a = fi(pi,F,T). Можно использовать оба оператора, чтобы задать fi объект с помощью fimath возразите и numerictype объект.
Можно создать fi объект с помощью определенного fimath объект. Когда вы делаете так, локальный fimath объект присвоен fi объект вы создаете. Если вы не задаете numerictype свойства объектов, размер слова fi объектные значения по умолчанию к 16 битам. Дробная длина определяется лучшим масштабированием точности:
F = fimath('RoundingMethod', 'Nearest',... 'OverflowAction', 'Saturate',... 'ProductMode','FullPrecision',... 'SumMode','FullPrecision')
F =
RoundingMethod: Nearest
OverflowAction: Saturate
ProductMode: FullPrecision
SumMode: FullPrecision
F.OverflowAction = 'Wrap'F =
RoundingMethod: Nearest
OverflowAction: Wrap
ProductMode: FullPrecision
SumMode: FullPrecision
a = fi(pi, F)
a =
3.1416
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 13
RoundingMethod: Nearest
OverflowAction: Wrap
ProductMode: FullPrecision
SumMode: FullPrecision
Можно также создать fi объекты с помощью fimath возразите при определении различного numerictype свойства во время создания:
b = fi(pi, 0, F)
b =
3.1416
DataTypeMode: Fixed-point: binary point scaling
Signedness: Unsigned
WordLength: 16
FractionLength: 14
RoundingMethod: Nearest
OverflowAction: Wrap
ProductMode: FullPrecision
SumMode: FullPrecision
c = fi(pi, 0, 8, F)
c =
3.1406
DataTypeMode: Fixed-point: binary point scaling
Signedness: Unsigned
WordLength: 8
FractionLength: 6
RoundingMethod: Nearest
OverflowAction: Wrap
ProductMode: FullPrecision
SumMode: FullPrecisiond = fi(pi, 0, 8, 6, F)
d =
3.1406
DataTypeMode: Fixed-point: binary point scaling
Signedness: Unsigned
WordLength: 8
FractionLength: 6
RoundingMethod: Nearest
OverflowAction: wrap
ProductMode: FullPrecision
SumMode: FullPrecision
Когда вы работаете с файлами в MATLAB®, можно создать fi конструкторы Object с помощью диалогового окна Insert fi Constructor. После определения значения и свойств fi объект в диалоговом окне, можно вставить предзаполненный fi конструктор Object в определенном местоположении в вашем файле.
Например, чтобы создать fi со знаком объект со значением пи, размером слова 16 битов и дробной длиной 13 битов:
На вкладке Home, в разделе File, нажимают New> Script, чтобы открыть редактор MATLAB.
На вкладке Editor, в разделе Edit, нажатии кнопки
в группе кнопок Insert. Нажмите Insert fi..., чтобы открыть диалоговое окно Insert fi Constructor.
Используйте окна редактирования и выпадающие меню, чтобы задать следующие свойства fi объект:
Value = pi
Data type mode = Fixed-point: binary point scaling
Signedness = Signed
Word length = 16
Fraction length = 13

Вставить fi конструктор Object в вашем файле, установите свой курсор в желаемом местоположении в файле и нажмите OK на диалоговом окне Insert fi Constructor. Нажатие на OK закрывает диалоговое окно Insert fi Constructor и автоматически заполняет fi конструктор Object в вашем файле:
![]()
Значение свойства принято с прошлого раза, когда это установлено. Например, создайте numerictype объект со значением true для Signed свойство и дробная длина 14:
T = numerictype('Signed', true, 'FractionLength', 14)
T =
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 14 Теперь создайте следующий fi объект, в котором вы задаете numerictype свойство после Signed свойство, так, чтобы получившийся fi объект подписывается:
a = fi(pi,'Signed',false,'numerictype',T)
a =
1.9999
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 14
Контрастируйте fi объект в этом примере кода с fi объект в следующем примере кода. numerictype свойство в следующем примере кода задано перед Signed свойство, таким образом, получившийся fi объект без знака:
b = fi(pi,'numerictype',T,'Signed',false)
b =
3.1416
DataTypeMode: Fixed-point: binary point scaling
Signedness: Unsigned
WordLength: 16
FractionLength: 14
Скопировать fi объект, просто используйте присвоение:
a = fi(pi)
a =
3.1416
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 13
b = a
b =
3.1416
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 13Можно записать допускающий повторное использование алгоритм MATLAB путем хранения типов данных алгоритмических переменных в отдельной таблице типов. Например,
function T = mytypes(dt) switch dt case 'double' T.b = double([]); T.x = double([]); T.y = double([]); case 'fixed16' T.b = fi([],1,16,15); T.x = fi([],1,16,15); T.y = fi([],1,16,14); end end
Бросьте переменные в алгоритме к типам данных в таблице типов как описано в Ручных Лучших практиках Преобразования Фиксированной точки.
function [y,z]=myfilter(b,x,z,T) y = zeros(size(x),'like',T.y); for n=1:length(x) z(:) = [x(n); z(1:end-1)]; y(n) = b * z; end end
В отдельном тестовом файле, настроенные входные данные, чтобы питаться в ваш алгоритм и задать типы данных входных параметров.
% Test inputs b = fir1(11,0.25); t = linspace(0,10*pi,256)'; x = sin((pi/16)*t.^2); % Linear chirp % Cast inputs T=mytypes('fixed16'); b=cast(b,'like',T.b); x=cast(x,'like',T.x); z=zeros(size(b'),'like',T.x); % Run [y,z] = myfilter(b,x,z,T);