Чтобы запустить пример:
В MATLAB® Командное окно, введите sfundemos
.
Откроется библиотека примеров S-функций.
Каждый блок представляет категорию примеров S-функций.
Дважды кликните категорию, чтобы отобразить включенные в нее примеры. Для примера щелкните C-files.
Дважды кликните блок, чтобы открыть и запустить пример, который он представляет.
Возможно, было бы полезно изучить некоторые примеры S-функций, когда вы читаете следующие главы. Код для примеров хранится в следующей папке в корневой папке MATLAB.
Код MATLAB |
|
C, C++ и Код Фортран |
|
The
папка (open) содержит много 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 функции MATLAB S. Также демонстрирует, как использовать пользовательский набор и методы get для блока SimState. |
msfcn_vs.m | msfcndemo_vsfunc | Реализуйте блок шага расчета переменной, в котором первый вход задерживается на количество времени, определяемое вторым входом. |
The
папка (open) также содержит много Level-1 S-функций MATLAB, предоставленных в качестве ссылки для устаревших моделей. Большинство из этих Level-1 S-функций MATLAB не имеют связанных примерных моделей.matlabroot
/ toolbox/simulink/simdemos/simfeatures
Имя файла | Описание |
---|---|
csfunc.m | Задайте непрерывную систему в формате пространство состояний. |
dsfunc.m | Задайте дискретную систему в формате «состояние-пространство». |
limintm.m | Реализуйте непрерывный ограниченный интегратор, где выход ограничен нижней и верхней границами и включает начальные условия. |
mixedm.m | Реализуйте гибридную систему, состоящую из непрерывного интегратора последовательно с модулем задержкой. |
sfun_varargm.m | Реализуйте S-функцию, которая показывает, как использовать команду MATLAB varargin . |
vsfunc.m | Проиллюстрировать, как создать переменный шаг расчета блок. Эта S-функция реализует переменную задержку шага, в которой первый вход задерживается на количество времени, определяемое вторым входом. |
The
папка (open) содержит примеры S-функций C MEX, многие из которых имеют аналог S-функции MATLAB. Функции MEX S на C перечислены в следующей таблице.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 | Реализуйте A/D конвертер на основе фрейма. |
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 | Модель отсутствует | Продемонстрировать S-функцию API для сохранения и восстановления 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 и mask. Этот пример файла 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-функций Фортран, доступных в
папка (open).matlabroot
/ toolbox/simulink/simdemos/simfeatures/src
Имя файла | Имя модели | Описание |
---|---|---|
sfun_atmos.c sfun_atmos_sub.F | sfcndemo_atmos | Рассчитать стандартную атмосферу 1976 года до 86 км используя стандартную подпрограмму Фортрана. |
В следующей таблице перечислены примеры C++ S-функций, доступных в
папка (open).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 MATLAB S-Function | MATLAB Function | S-Function | S-Function Builder