Для запуска примера:
В окне команд MATLAB ® введитеsfundemos.
Откроется библиотека примеров S-функций.

Каждый блок представляет категорию примеров S-функций.
Дважды щелкните категорию, чтобы отобразить примеры, которые в нее включены. Например, щелкните C-файлы.

Дважды щелкните блок, чтобы открыть и выполнить пример, который он представляет.
Может быть полезно изучить некоторые примеры S-функций, когда вы прочитаете следующие главы. Код примеров хранится в следующей папке в корневой папке MATLAB.
Код MATLAB |
|
Код C, C++ и Fortran |
|
папка (открытая) содержит множество Level-2 S-функций MATLAB. Попробуйте начать с просмотра этих файлов.matlabroot/toolbox/simulink/simdemos/simfeatures
| Имя файла | Имя модели | Описание |
|---|---|---|
msfcn_dsc.m | msfcndemo_sfundsc1 | Реализация S-функции с наследуемым временем выборки. |
msfcn_limintm.m | msfcndemo_limintm | Реализовать непрерывный ограниченный интегратор, где выход ограничен нижней и верхней границами и включает начальные условия. |
msfcn_multirate.m | msfcndemo_multirate | Внедрение многоскоростной системы. |
msfcn_times_two.m | msfcndemo_timestwo | Реализовать S-функцию, которая удваивает ее вход. |
msfcn_unit_delay.m | msfcndemo_sfundsc2 | Реализация единичной задержки. |
msfcn_varpulse.m | msfcndemo_varpulse | Реализация генератора переменной длительности импульса путем вызова set_param в пределах Level-2 S-функции MATLAB. Также демонстрируется использование пользовательского набора и получение методов для блока SimState. |
msfcn_vs.m | msfcndemo_vsfunc | Реализуют переменный временной блок выборки, в котором первый вход задерживается на величину времени, определяемую вторым входом. |
папка (открытая) также содержит множество Level-1 MATLAB S-функций, предоставляемых в качестве ссылки для устаревших моделей. Большинство из этих Level-1 S-функций MATLAB не имеют связанных моделей примеров.matlabroot/toolbox/simulink/simdemos/simfeatures
| Имя файла | Описание |
|---|---|
csfunc.m | Определение непрерывной системы в формате state-space. |
dsfunc.m | Определите дискретную систему в формате state-space. |
limintm.m | Реализовать непрерывный ограниченный интегратор, где выход ограничен нижней и верхней границами и включает начальные условия. |
mixedm.m | Реализовать гибридную систему, состоящую из непрерывного интегратора последовательно с единичной задержкой. |
sfun_varargm.m | Реализация S-функции, показывающей использование команды MATLAB varargin. |
vsfunc.m | Покажите, как создать переменный временной блок выборки. Эта S-функция реализует переменную задержку шага, при которой первый вход задерживается на величину времени, определяемую вторым входом. |
папка (открытая) содержит примеры S-функций C MEX, многие из которых имеют аналог S-функции MATLAB. S-функции C MEX перечислены в следующей таблице.matlabroot/toolbox/simulink/simdemos/simfeatures/src
| Имя файла | Имя модели | Описание |
|---|---|---|
csfunc.c | sfcndemo_csfunc | Внедрение непрерывной системы. |
dlimintc.c | Модель недоступна | Внедрение интегратора с ограниченным дискретным временем. |
dsfunc.c | sfcndemo_dsfunc | Внедрение дискретной системы. |
limintc.c | Модель недоступна | Внедрение интегратора с ограниченными возможностями. |
mixedm.c | sfcndemo_mixedm | Реализовать гибридную динамическую систему, состоящую из непрерывного интегратора (1/с) последовательно с единичной задержкой (1/z). |
mixedmex.c | sfcndemo_mixedmex | Реализовать гибридную динамическую систему с одним выходом и двумя входами. |
slexQuantizeSFcn.c | sfcndemo_sfun_quantize | Реализовать векторизированный квантователь. Квантует входные данные на шаги, как определено параметром интервала квантования. q. |
sdotproduct.c | sfcndemo_sdotproduct | Вычислите скалярное произведение (умножение-накопление) двух вещественных или комплексных векторов. |
sfbuilder_bususage.c | sfbuilder_bususage | Доступ к S-Function Builder с шиной ввода и вывода. |
sfbuilder_movingAverage.c | sfbuilder_movingAverage | Реализация простого скользящего среднего временного окна с помощью команд Пуск (Start) и Завершить (Terminate). |
sftable2.c | sfcndemo_sftable2 | Реализация двумерного поиска в таблице. |
sfun_atol.c | sfcndemo_sfun_atol | Установите различные абсолютные допуски для каждого непрерывного состояния. |
sfun_cplx.c | sfcndemo_cplx | Добавьте сложные данные для S-функции с одним входным портом и одним параметром. |
sfun_directlook.c | Модель недоступна | Реализация прямого поиска 1-D. |
sfun_dtype_io.c | sfcndemo_dtype_io | Реализуйте S-функцию, использующую типы данных Simulink ® для входов и выходов. |
sfun_dtype_param.c | sfcndemo_dtype_param | Реализуйте S-функцию, использующую для параметров типы данных Simulink. |
sfun_dynsize.c | sfcndemo_sfun_dynsize | Реализует динамически масштабируемые выходы. |
sfun_errhdl.c | sfcndemo_sfun_errhdl | Проверьте параметры с помощью mdlCheckParameters Подпрограмма S-функции. |
sfun_fcncall.c | sfcndemo_sfun_fcncall | Выполнение подсистем вызова функций на первом и втором выходных элементах. |
sfun_frmad.c | sfcndemo_frame | Реализовать АЦП на основе кадров. |
sfun_frmda.c | sfcndemo_frame | Реализация D/A-преобразователя на основе кадров. |
sfun_frmdft.c | sfcndemo_frame | Реализация многоканального кадрового дискретного преобразования Фурье (и его обратного преобразования). |
sfun_frmunbuff.c | sfcndemo_frame | Реализация блока unbuffer на основе кадров. |
sfun_multiport.c | sfcndemo_sfun_multiport | Сконфигурируйте несколько портов ввода и вывода. |
sfun_manswitch.c | Модель недоступна | Реализация ручного переключения. |
sfun_matadd.c | sfcndemo_matadd | Добавьте матрицы в S-функцию с одним входным портом, одним выходным портом и одним параметром. |
sfun_multirate.c | sfcndemo_sfun_multirate | Продемонстрируйте, как указать время выборки на основе порта. |
sfun_port_constant.c | sfcndemo_port_constant | Продемонстрируйте, как задать постоянное время выборки на основе порта. |
sfun_port_triggered.c | sfcndemo_port_triggered | Демонстрация использования времени выборки на основе портов в запускаемой подсистеме. |
sfun_runtime1.c | sfcndemo_runtime | Реализация параметров времени выполнения для всех настраиваемых параметров. |
sfun_runtime2.c | sfcndemo_runtime | Регистрация отдельных параметров времени выполнения. |
sfun_runtime3.c | sfcndemo_runtime | Зарегистрируйте диалоговые параметры как параметры времени выполнения. |
sfun_runtime4.c | sfcndemo_runtime | Реализуйте параметры времени выполнения как функцию нескольких диалоговых параметров. |
sfun_simstate.c | Модель недоступна | Продемонстрируйте API S-функции для сохранения и восстановления SimState. |
sfun_zc.c | sfcndemo_sfun_zc | Демонстрация использования невыбранных нулевых переходов для реализации abs(u). Эта S-функция предназначена для использования с решателем с переменным шагом. |
sfun_zc_sat.c | sfcndemo_sfun_zc_sat | Демонстрация нулевых пересечений с насыщением. |
sfun_zc_cstate_sat.c | sfcndemo_sfun_zc_cstate_sat | Внедрение непрерывного интегратора с ограничениями насыщения и обнаружением пересечения нулей. |
sfun_integrator_localsolver.c | sfcndemo_sfun_localsolver | Продемонстрируйте непрерывный интегратор, в котором непрерывные состояния решаются с помощью отдельного локального решателя вместо используемого моделью. |
sfun_angle_events.c | sfcndemo_angle_events | Реализовать способ для надежного и эффективного обнаружения вращающегося тела, пересекающего заданные углы. |
sfun_angle_events.c | Модель недоступна | Продемонстрируйте обнаружение угла и включите Stateflow ® для планирования вызовов функций. |
sfunmem.c | sfcndemo_sfunmem | Реализация функции одноэтапной задержки интеграции и сохранения памяти. |
simomex.c
| sfcndemo_simomex | Реализовать динамическую систему состояние-пространство с одним входом и двумя выходами, описанную уравнениями состояние-пространство: dx/dt = Ax + Bu y = Cx + Du x - вектор состояния, u - вектор входных данных, и y - вектор выходных данных.
|
stspace.c
| sfcndemo_stspace | Реализация набора уравнений состояния-пространства. Это можно превратить в новый блок с помощью блока S-Function и средства маски. В этом примере файл MEX выполняет ту же функцию, что и встроенный блок State-Space. Это пример файла MEX, в котором количество входов, выходов и состояний зависит от параметров, передаваемых из рабочей области. |
stvctf.c
| sfcndemo_stvctf | Реализовать функцию передачи непрерывного времени, чьи полиномы передаточной функции передаются через входной вектор. Это полезно для приложений непрерывного адаптивного к времени управления. |
stvdtf.c | sfcndemo_stvdtf | Реализовать дискретно-временную передаточную функцию, чьи передаточные функции полиномы передаются через входной вектор. Это полезно для приложений дискретно-временного адаптивного управления. |
stvmgain.c | sfcndemo_stvmgain | Реализуйте изменяющийся во времени коэффициент усиления матрицы. |
table3.c | Модель недоступна | Реализация таблицы поиска 3-D. |
timestwo.c | sfcndemo_timestwo | Реализуйте S-функцию C MEX, которая удваивает ее вход. |
vdlmintc.c | Модель недоступна | Реализация дискретно-временного векторизированного интегратора с ограниченными возможностями. |
vdpmex.c | sfcndemo_vdpmex | Реализовать уравнение Ван дер Пол. |
vlimintc.c
| Модель недоступна | Внедрение векторизированного интегратора с ограниченными возможностями. |
vsfunc.c | sfcndemo_vsfunc | Покажите, как создать переменный временной блок выборки. Этот блок реализует задержку с переменным шагом, при которой первый вход задерживается на величину времени, определяемую вторым входом. |
sfun_pwm.c | sfcndemo_pwm | Покажите, как создать контролируемый временной блок выборки. |
sfun_d2c | sfcndemo_d2c | Покажите, как преобразовать дискретный входной сигнал в плавный непрерывный выходной сигнал |
В следующей таблице перечислены примеры S-функций Fortran, доступных в папка (открытая).matlabroot/toolbox/simulink/simdemos/simfeatures/src
| Имя файла | Имя модели | Описание |
|---|---|---|
sfun_atmos.csfun_atmos_sub.F | sfcndemo_atmos | Рассчитать стандартную атмосферу 1976 года до 86 км с помощью подпрограммы Фортрана. |
В следующей таблице перечислены примеры C++ S-функций, доступных в папка (открытая).matlabroot/toolbox/simulink/simdemos/simfeatures/src
| Имя файла | Имя модели | Описание |
|---|---|---|
sfun_counter_cpp.cpp | sfcndemo_counter_cpp | Сохранение объекта C++ в векторе указателей PWork. |
sfbuilder_permute.cpp | sfbuilder_permutation | Реализация перестановки путем вызова внешних классов C++ с помощью команд Start и Terminate. |
sfbuilder_linfilt.cpp | sfbuilder_upsampling | Реализовать линейную фильтрацию с алгоритмами C++ STL для повышающей дискретизации знаковой волны. |
В следующем примере показано, как упорядочить артефакты S-функций в проекте. Этот проект может использоваться совместно с другими пользователями в качестве zip-архива или панели инструментов MATLAB.
| Имя файла | Описание |
|---|---|
slexBlocksetDesignerExample | Упорядочить артефакты S-функций в один проект с помощью Blockset Designer. |
Level-2 S-функция MATLAB | Функция MATLAB | S-функция | Построитель S-функций