вызвать функцию уровня 2 через редактор Matlab - PullRequest
0 голосов
/ 04 июля 2019

Я разработал модель Simulink.Я скомпилировал его, чтобы иметь функцию уровня 2: 'sfun.mexw32'.Я хотел бы вызвать эту функцию в файле .m в редакторе Matlab.

Я пытаюсь понять, как это реализовать, поэтому сначала я пытаюсь понять, как это сделать с помощью функции иллюстрации ужесуществует в matlab: timestwo .

Вы можете получить больше информации, набрав open('sfuntmpl.m'), который является шаблоном для sfunction.

[sys,x0,str,ts] =timestwo(0,0,1,3)

Я получил эту ошибку: "Ошибка использования timestwo S-функция MEX level2" timestwo ", вызванная слишком большим количеством левых аргументов"

Я не понимаю, почему у меня есть эта ошибка, и я ожидал получить результатвведите 1, который должен быть 2.

А также знать, можно ли задать вектор ввода и ввод, представляющий время, для имитации сигнала и получения результата.

1 Ответ

0 голосов
/ 05 июля 2019

Если ваша s-функция имеет расширение .mexw32, то это скомпилированная S-функция уровня 2. Это , а не S-функция m-кода.

Я думаю, вы обнаружите, что нет никакого способа вызвать S-функцию M-кода уровня 2 или S-функцию C-кода уровня 2 из чего-либо, кроме модели Simulink. S-функция m-кода уровня 2 имеет один вход: объект block, созданный и переданный ему механизмом выполнения Simulink, в то время как S-функция c-кода уровня 2 состоит из ряда функций. каждому из которых передается структура simStruct (c-code), которая также создается механизмом исполнения Simulink.

Вам нужно будет создать модель с вашей S-функцией, предположительно вместе с соответствующими блоками inport и outport, а затем использовать sim для вызова модели.

Обратите внимание, что указанная вами ссылка (т. Е. open('sfuntmpl.m')) - это шаблон для S-функции Level-1 m-code. Их можно вызывать из MATLAB, так как они просто обычная функция m-кода. Если у вас есть S-функция m-кода Уровня 1 (которая, по-видимому, отсутствует), то вы должны вызывать ее так, как вы пытаетесь это сделать. в вопросе.

Шаблон для S-функции m-кода уровня 2: edit('msfuntmpl.m');

Шаблон для S-функции c-кода уровня 2: edit(fullfile(matlabroot,'simulink','src','sfuntmpl_basic.c'));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...