Способы Создать Объекты fi

Типы fi Конструкторов

Можно создать 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 объекты. Для другого, более основных примеров построения fi объекты, смотрите раздел Examples следующих страниц с описанием функции конструктора:

Примечание

fi конструктор создает fi объект с помощью RoundingMethod из Nearest и OverflowAction из Saturate. Если вы создаете fi от значений с плавающей точкой, RoundingMethod по умолчанию и OverflowAction настройки свойства не используются.

Построение Объекта fi с Именем свойства / Пары Значения свойства

Можно использовать имя свойства / пары значения свойства, чтобы установить 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 по умолчанию значения.

Построение Объекта fi Используя Объект numerictype

Можно использовать 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

Можно создать 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: FullPrecision
d = 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

Создание fi Конструкторы Object в графический интерфейсе пользователя

Когда вы работаете с файлами в MATLAB®, можно создать fi конструкторы Object с помощью диалогового окна Insert fi Constructor. После определения значения и свойств fi объект в диалоговом окне, можно вставить предзаполненный fi конструктор Object в определенном местоположении в вашем файле.

Например, чтобы создать fi со знаком объект со значением пи, размером слова 16 битов и дробной длиной 13 битов:

  1. На вкладке Home, в разделе File, нажимают New> Script, чтобы открыть редактор MATLAB.

  2. На вкладке Editor, в разделе Edit, нажатии кнопки в группе кнопок Insert. Нажмите Insert fi..., чтобы открыть диалоговое окно Insert fi Constructor.

  3. Используйте окна редактирования и выпадающие меню, чтобы задать следующие свойства fi объект:

    • Value = pi

    • Data type mode = Fixed-point: binary point scaling

    • Signedness = Signed

    • Word length = 16

    • Fraction length = 13

  4. Вставить 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

Скопировать 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

Создание fi Объекты Для Использования в Таблице типов

Можно записать допускающий повторное использование алгоритм 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);