Для УСПОКОИТЕЛЬНОГО клиента, чтобы получить функциональные подписи функций MATLAB®, развернутых на MATLAB Production Server™ с помощью API открытия, необходимо встроить информацию о функциях MATLAB в файле JSON при упаковке развертываемого архива.
После добавления функций MATLAB, чтобы развернуться к приложению Production Server Compiler, в разделе Include MATLAB function signature file, нажимают кнопку Create File. Это действие создает шаблон файла JSON с именем
.<projectName>functionSignatures.json
Файл
является одним объектом JSON. Это содержит версию схемы и список функциональных объектов. Каждый функциональный объект содержит список объектов подписи, и каждый объект подписи содержит список объектов аргумента.<projectName>functionSignatures.json
Если ваши функции MATLAB передают struct
или типы данных cell
, можно добавить их описания в файл JSON также.
Можно получить доступ к объектному файлу JSON с сервера при помощи Сервиса Открытия.
Версия схемы имеет значение, которое является строкой JSON в формате <major#>.<minor#>.<patch#>
с каждым номером, заданным как неотрицательное целое число.
Функциональные объекты автоматически наследовали свое имя от имени функций MATLAB, которые вы добавили в проект. Строка цели для функционального объекта наследована от функционального описания, предоставленного в функции MATLAB. Значение каждого функционального объекта является объектом подписи.
{ "functionName1": { signatureObj1}, "functionName2": { signatureObj2} }
Объект подписи задает список аргументов ввода и вывода и поддерживаемых платформ для функции. Значение свойств является массивом объектов аргумента.
{ "functionName1": { "inputs": [ argumentObj1, argumentObj2 ] } }
Свойство | Описание | Тип данных JSON значения |
---|---|---|
| Список входных аргументов функции | Массив объектов аргумента |
| Список выходных аргументов функции | Массив объектов аргумента |
Объекты аргумента задают информацию для каждого из аргументов ввода и вывода.
{ "functionName1": { "inputs": [ {"name":"in1", "type":["double"], "purpose":"<input 1 description>"}, {"name":"in2", "type":["logical"], "purpose":"<input 2 description>"} ] } }
functionName1
, in1
должен появиться перед in2
.Каждый объект аргумента может включать следующие свойства.
Объект определения типа задает массивы ячеек и структуры. Это должно быть задано, только если любое из значений к объектам аргумента является ячейками или структурами. Сгенерированный шаблон файла JSON не имеет этого объекта по умолчанию, вы, как ожидают, добавите его если и, когда необходимый.
В схеме это обозначается с помощью имени, _typedefs
и его значение являются именем одного или нескольких объекты структуры или ячейка. Тип совпадает с объектом аргумента.
Пример Использования Гомогенного Массива ячеек: Если функция MATLAB sortinput
, принимает массив ячеек как вход и возвращает массив ячеек, как выведено, и каждая ячейка во входе состоит из структуры, ее представление JSON:
{ "_schemaVersion": "1.1.0", "_typedefs" : { "struct_names_scores_of_students": { "purpose": "Names and scores of students", "type": "struct", "fields": [ {"name": "Name", "type": "char"}, {"name": "Score", "type": ["double","size=1,1"]} ] }, "cell_student_information": { "purpose": "Cell representing student information", "type": "cell", "elements": { "type": "struct:struct_names_scores_of_students" } } }, "sortinput": { "inputs": [ { "name": "unsorted_input", "type": ["cell:cell_student_information"], "purpose": "Unsorted list of students and their scores" } ], "outputs": [ { "name": "sorted_output", "type": ["cell:cell_student_information"], "purpose": "Sorted list of students with respect to their scores" } ] } }
Пример Использования Неоднородного Массива ячеек: Если функция MATLAB organize
, принимает массив ячеек с длиной 3 содержащий символ, квадратную матрицу и строку, как введено, и возвращается, вектор удваивается, как выведено, его представление JSON:
{ "_typedefs": { "cell_het_mydata": { "purpose": "cell containing character, matrix, and string", "type" : "cell", "elements" : [ { "type": ["char", "size=1,1"], "purpose": "cell element 1 is a character" }, { "type": ["double", "size=N,N"], "purpose": "cell element 2 is a square matrix" }, { "type": "char", "purpose": "cell element 3 is a string" } ] }, "organize": { "inputs": [ { "name": "data", "type": ["cell:cell_het_mydata","size=3,1"], "purpose": "heterogenous cell array" } ], "outputs": [ { "name": "numerator", "type": "double", "purpose": "result of function" } ] } }