Когда вы передаете MATLAB® структура к внешней библиотечной функции:
Каждое имя поля MATLAB должно совпадать с именем поля в определении структуры библиотеки. Имена полей являются чувствительными к регистру.
Структуры MATLAB не могут содержать поля, которые не находятся в определении структуры библиотеки.
Если структура MATLAB содержит меньше полей, чем заданный в структуре библиотеки, MATLAB обнуляет неопределенные поля.
Вы не должны совпадать с типами данных числовых полей. calllib
функция преобразует в правильный числовой тип.
Чтобы определить имя и тип данных полей структуры, вы можете:
Консультируйтесь с документацией библиотеки.
Посмотрите на определение структуры в заголовочном файле библиотеки.
Используйте libstruct
функция.
MATLAB автоматически преобразует структуру в определение библиотеки для того типа структуры. Для большинства случаев, таких как работа с маленькими структурами, это хорошо работает.
Однако при работе с повторными вызовами, которые передают большие структуры, преобразуйте структуру вручную прежде, чем выполнить любые вызовы к внешним функциям. Вы сохраняете время вычислений путем преобразования данных о структуре только однажды в запуске, а не в каждом вызове функции. Можно также сохранить память, если поля конвертированной структуры занимают меньше места, чем исходная структура MATLAB.
Чтобы преобразовать вручную, вызовите libstruct
функция, чтобы создать libstruct object. Несмотря на то, что это - объект, это ведет себя как структура MATLAB. Поля объекта выведены из внешне заданного типа структуры.