Фиксированная точка для классов MATLAB

Автоматизированная поддержка преобразования классов MATLAB

Автоматизированный процесс преобразования фиксированной точки:

  • Предлагает типы данных фиксированной точки на основе областей значений моделирования для классов MATLAB®. Это не предлагает типов данных на основе выведенных областей значений для классов MATLAB.

    После моделирования, приложения MATLAB Coder™:

    • Функциональный список содержит конструкторов класса, методы и специализации.

    • Окно кода отображает объекты, используемые в каждой функции.

    • Обеспечивает покрытие кода для методов.

    Для получения дополнительной информации смотрите информацию о Просмотре для Классов MATLAB.

  • Методы класса поддержек, свойства и специализации. Для каждой специализации класса, class_name, преобразование генерирует отдельный файл class_name_fixpt.m. Для каждого инстанцирования класса сгенерированная фиксированная точка содержит вызов конструктора соответствующей специализации.

  • Классы поддержек, которые имеют get и методы set, такие как get.PropertyName, set.PropertyName PropertyName . Эти методы называются, когда свойства считаны или присвоены. Методы set могут быть специализированы. Иногда, в сгенерированной фиксированной точке, операторы присваивания преобразовываются к вызовам функции.

Неподдерживаемые построения

Автоматизированный процесс преобразования не поддерживает:

  • Наследование классов.

  • Пакеты.

  • Конструкторы, которые используют nargin и varargin.

Лучшые практики стиля кодирования

Когда вы пишете код MATLAB, который использует классы MATLAB:

  • Инициализируйте свойства в конструкторе класса.

  • Замените постоянные свойства на статические методы.

Например, рассмотрите класс counter.

classdef Counter < handle
  properties
    Value = 0;
  end

  properties(Constant)
    MAX_VALUE = 128
  end
  
  methods
    function out = next(this)
      out = this.Count;
      if this.Value == this.MAX_VALUE
        this.Value = 0;
      else
        this.Value = this.Value + 1;
      end
    end
  end
end
Чтобы использовать автоматизированный процесс преобразования фиксированной точки, перепишите класс, чтобы иметь статический класс, который инициализирует постоянное свойство MAX_VALUE и конструктора, который инициализирует свойство Value.
classdef Counter < handle
  properties
    Value;
  end

  methods(Static)
    function t = MAX_VALUE()
      t = 128;
    end
  end
  
  methods
    function this = Counter()
      this.Value = 0;
    end 
    function out = next(this)
      out = this.Value;
      if this.Value == this.MAX_VALUE
        this.Value = 0;
      else
        this.Value = this.Value + 1;
      end
    end
  end
end

Была ли эта тема полезной?