Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
matlab_5.3(учебник).DOC
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
2.18 Mб
Скачать

5.6. Раздел Function & Tables (функции и таблицы)

     Раздел содержит блоки, реализующие различные функции и табличные компоненты.

Рис. 5.13 - Блоки раздела Function & Tables

     Раздел содержит 5 блоков (см. рис. 5.13 ): Fcn, Matlab Fcn, S-Function, Look-up Table, Look-up Table (2-D).

     Блок Fcn – универсальный вычислительный блок.

     Параметр блока: Expression - выражение, используемое блоком для вычисления выходного сигнала на основании входного. Это выражение составляется по правилам, принятым для описания функций на языке Си.

     В выражении можно использовать следующие компоненты:

     1. Входной сигнал. Входной сигнал в выражении обозначается u, если он является скаляром. Если входной сигнал - вектор, необходимо указывать номер элемента вектора в круглых скобках. Например, u(1) и u(3) - первый и третий элементы входного вектора.

     2. Константы.

     3. Арифметические операторы (+ – * /).

     4. Операторы отношения (= = != > < >= <=).

5. Логические операторы (&& | | !).

     6. Круглые скобки.

     7. Математические функции: abs, acos, asin, atan, atan2, ceil, cos, cosh, exp, fabs, floor, hypot, ln, log, log10, pow, power, rem, sgn, sin, sinh, sqrt, tan, и tanh.

     8. Переменные из рабочей области. Если переменная рабочей области является массивом, то ее элементы должны указываться с помощью индексов в круглых скобках.

     Операторы отношения и логические операторы возвращают значения в виде логического нуля (False) или логической единицы (True).

     Блок не поддерживает матричные и векторные операции. Выходной сигнал блока всегда - скаляр.

     Блок Matlab Fcn задает выражение в стиле языка программирования Matlab.

     Параметры:

  • Matlab function - выражение на языке Matlab;

  • Output dimensions - размерность выходного сигнала (значение параметра "минус один" предписывает блоку определять размерность автоматически);

  • Output signal type - тип выходного сигнала.

     Output signal type выбирается из списка:

  • real - действительный сигнал;

  • complex - комплексный сигнал;

  • auto - автоматическое определение типа сигнала.

     4. Collapse 2-D results to 1-D - преобразование двумерного выходного сигнала к одномерному.

     Входной сигнал в выражении обозначается u, если он является скаляром. Если входной сигнал - вектор, необходимо указывать номер элемента вектора в круглых скобках. Например, u(1) и u(3) - первый и третий элементы входного вектора. Если выражение состоит из одной функции, то ее можно задать без указания параметров. Выражение может содержать также собственные функции пользователя, написанные на языке Matlab и оформленные в виде m-файлов. Имя m-файла не должно совпадать с именем модели (mdl-файлом).

     Рассмотрим простой пример применения блока Matlab Fcn. В примере используется функция My_Matlab_Fcn, вычисляющая сумму и произведение двух элементов входного вектора с компонентами x, y. Текст функции (файл My_Matlab_Fcn.m) приведен ниже:

function z=My_Matlab_Fcn(x,y);

v(1)=x*y;

v(2)=x + y.

     Выражение для вызова функции, заданное параметром Matlab function, имеет вид: My_Matlab_Fcn(u(1),u(2)).

     Блок Matlab Fcn позволяет применить к входному сигналу любую подпрограмму, реализованную в виде m-файла. Это может быть и библиотечная функция пакета Matlab, так и программа созданная разработчиком.

     Блоки S-Function являются описанием блока на одном из языков программирования: Matlab, C++, Ada, или Fortran. Набор стандартных блоков Simulink достаточно обширен, однако в практике моделирования встречаются ситуации, когда нужного блока нет либо структурное моделирование делает модель слишком сложной. В этом случае необходимо использовать технологию S-Function для создания нужного блока. С помощью языков программирования пользователь может создать описание сколь угодно сложного блока и подключить его к Simulink-модели, при этом с точки зрения взаимодействия пользователя с моделью, блок на основе S-Function ничем не отличается от стандартного библиотечного блока Simulink. Создаваемые блоки могут быть непрерывными, дискретными или гибридными. S-Function, созданные на C++, Ada или Fortran, компилируются в исполняемые (*.dll) файлы.

     Чаще всего блоки S-Function используются при создании новых библиотечных блоков, обеспечивающих взаимодействие Simulink с аппаратными средствами компьютера, при создании блоков на основе математических уравнений, блоков, реализующих анимационные возможности Matlab, а также при подключении к модели Simulink существующего программного кода языков высокого уровня.

     Блок Look-up Table задает в табличной форме функцию одной переменной.

     Параметры:

  • Vector of input values - вектор значений входного сигнала (может быть задан в виде дискретных значений, например, [1 2 7 8], либо в виде непрерывного диапазона, например, [0:8], элементы вектора или граница диапазона могут быть заданы в виде вычисляемого выражения, например [tan(5) sin(3)]);

  • Vector of output values - вектор выходных значений, соответствующий вектору входных значений.

     Блок работает в соответствии со следующими правилами:

     1. Если входной сигнал равен одному из элементов вектора входных значений (Vector of input values), то выходное значение блока будет равно соответствующему элементу вектора выходных значений (Vector of output values). Например, пусть вектор входных значений равен [0 1 2 5], а вектор выходных значений [-5 -8 3 100], тогда при входном сигнале равном 1 выходной сигнал будет равен -8.

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

     3. Если входной сигнал выходит за границы вектора входных значений, то блок выполняет линейную экстраполяцию по двум крайним элементам.

     Блок Look-up Table (2-D) задает в табличной форме функцию двух переменных.

     Параметры:

  • Row - строка (вектор значений первого аргумента, задается аналогично параметру Vector of input values одномерной таблицы, элементы вектора должны быть упорядочены по возрастанию);

  • Column - столбец (вектор значений второго аргумента, задается аналогично предыдущему параметру);

  • Table - таблица значений функции (задается в виде матрицы, количество строк должно быть равно числу элементов вектора Row, а количество столбцов - числу элементов вектора Column).

     Если входной двумерный сигнал выходит за границы заданного двумерного вектора входных значений, то блок выполняет линейную экстраполяцию.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]