Аргументы структуры

Требования аргумента структуры

Когда вы передаете структуру MATLAB® внешней библиотечной функции:

  • Каждое имя поля MATLAB должно совпадать с именем поля в определении структуры библиотеки. Имена полей являются чувствительными к регистру.

  • Структуры MATLAB не могут содержать поля, которые не находятся в определении структуры библиотеки.

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

Вы не должны совпадать с типами данных числовых полей. Функция calllib преобразовывает в правильный числовой тип.

Нахождение имен полей структуры

Чтобы определить имя и тип данных полей структуры, вы можете:

  • Консультируйтесь с документацией библиотеки.

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

  • Используйте функцию libstruct.

Стратегии передающих структур

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

Однако при работе с повторными вызовами, которые передают большие структуры, преобразуйте структуру вручную прежде, чем выполнить любые вызовы к внешним функциям. Вы сохраняете время вычислений путем преобразования данных о структуре только однажды в запуске, а не в каждом вызове функции. Можно также сохранить память, если поля конвертированной структуры занимают меньше места, чем исходная структура MATLAB.

Чтобы преобразовать вручную, вызовите функцию libstruct, чтобы создать libstruct object. Несмотря на то, что это - объект, это ведет себя как структура MATLAB. Поля объекта выведены от внешне заданного типа структуры.

Смотрите также

Связанные примеры

Больше о