Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MatLAB( praktikum ru).docx
Скачиваний:
79
Добавлен:
01.05.2015
Размер:
145.76 Кб
Скачать

 

Алматинский институт энергетики и связи

Кафедра инженерной кибернетики

 

 

 

 

 

 

 

 

 

 

 

 

 

Основные приемы работы в среде matlab

 

Методический практикум

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Алматы 2004

 

 

 

 

СОСТАВИТЕЛЬ: Ибраева Л.К.ОСНОВНЫЕ ПРИЕМЫ РАБОТЫ В СРЕДЕ MATLAB. Методический практикум – Алматы: АИЭС, 2004 -    49  с.

 

Система MatLAB (MATrix LABoratory) является интерактивной системой для выполнения инженерных и научных расчетов Методический практикум предназначен для преподавателей, аспирантов и студентов, желающих применять систему MATLAB  при исследовании систем. В методическом практикуме описаны только основные приемы работы с системой.

Назначение практикума – ознакомить пользователя с системой. При необходимости более полной информации по пакету, который предполагается использовать, необходимо обратиться к встроенной системе помощи или к дополнительной литературе.

Каждый раздел практикума сопровождается примерами. Рекомендуется при изучении пакета выполнять эти упражнения – результат будет отражаться в командном окне. Поэтому в методических разработках не приведены окна с результатами (за исключением примеров раздела 3).

 

 

 

Рецензент: канд. техн наук,  доц. С.Г.Хан

 

 

 

 

 

 

 

 

 

 

 

 

Печатается по плану издания Алматинского института энергетики и связи на 2004 г.

 

 

 

 

 

 

 

 

 

 

© Алматинский институт энергетики и связи, 2004 г.

Система MatLAB (MATrix LABoratory) является интерактивной системой для выполнения инженерных и научных расчетов, ориентированной на работу с массивами данных. Она имеет встроенную матричную и комплексную арифметику.

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

Система MatLAB выполняет операции в режиме непосредственных вычислений без программирования, причем наряду с обычными арифметическими и алгебраическими операциями могут использоваться такие сложные операции, как обращение матрицы, вычисление ее собственных значений и векторов, решение систем линейных алгебраических уравнений и т.д.

Основная отличительная черта системы – легкость ее модификации и адаптации к конкретным задачам пользователя. Пользователь может ввести в систему любую новую команду, оператор или функцию и пользоваться ими как встроенными, причем нет необходимости их описания. Достаточно сохранить их в виде файла с расширением .m.

Работа в среде MatLAB может выполняться:

- в режиме «калькулятора», когда вычисления производятся

  непосредственно в командном окне;

- путем вызова программы (встроенной или пользовательской);

- путем графической сборки модели исследуемой системы – пакет Simulink.

 

1.     MatLAB как научный калькулятор

 

 Ввод чисел выполняется по обычным правилам языков программирования; десятичный показатель записывается в виде целого числа после символа e.

Формат чисел:  Файл-Свойства

Арифметические действия: +   –   *   /    ^                 

                             

Вывод результата:

- Если оператор не заканчивается символом «;» (точка с запятой), результат

  сразу отображается  в командном окне.

- Если оператор не содержит знака присваивания, то значение результата

  присваивается системной переменной ans.

- Общая форма:

       <имя переменной> = <результат>

Имена переменных могут использоваться для хранения промежуточных результатов.

 

Пример 1.1:

>> 25 + 17;

>>ans*7

ans = 294

 

Зарезервированные имена переменных:    i, j   - мнимая единица;    pi – число π;  ans – результат последней операции без знака присваивания.

         Некоторые элементарные функции:

sin(z), sinh(z), asin(z), cos(z), cosh(z), acos(z), tan(z), atan(z), exp(z), log(z), log10(z), sqrt(z), abs(z), round(z).

 

Комплексные числа вводятся в виде:

 <имя переменной> =                                                                                                            <значение действ.части> + i (либо  j )*< значение мнимой части>

Простейшие действия с комплексными числами производятся с использованием приведенных выше операций.

 

Пример 1.2:

>> x=1+2i; y = -3+4i;

>>disp(x+y)

-2.0000+6.0000i

 

Здесь использована функция disp, которая также позволяет выводить в командное окно результаты вычислений или некоторый текст.

Функции комплексного аргумента:

real(z) – выделяет действительную часть комплексного аргумента;

imag(z) – выделяет мнимую часть комплексного аргумента;

angle(z) – вычисляет значение аргумента комплексного числа

                (в радианах от – π до + π).                                                                                          

Пример 1.3:

Наберите в командном окне:

>>disp(real(y)

>>disp(imag(y)0

>>disp(angle(y))

 

MatLAB специально предназначен для вычислений с векторами, матрицами и полиномами. Любая заданная переменная по умолчанию является вектором или матрицей.

 

Ввод вектора:

V1 = [1.2  2.3  3.4  4.5] (вместо пробелов можно использовать запятые).

Длинные векторы можно вводить частями, а затем объединять: v=[v1  v2].

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

         V = nz : h : kz (nz – начальное значение, h – шаг, kz – конечное значение). По умолчанию шаг принимается равным 1.

Чтобы ввести вектор-столбец, его элементы нужно отделять точкой с запятой.

 

 

Пример 1.4:

Введите в командное окно

>>v1[1  2  3];v2=[4  5  6];

>>v=[v1 v2]

 

         Действия над векторами одинаковой структуры:

Сложение и вычитание векторов: +  и - 

Транспонирование – знак апострофа (например, х').

Умножение  вектора на число: *.

Умножение двух векторов: * (по правилам математики- для векторов одинакового размера и лишь тогда, когда один из векторов-сомножителей является строкой, а другой – столбцом; в противном случае, один из векторов надо транспонировать).

Векторное произведение (для трехкомпонентных векторов): cross (v1 v2)

Предусмотрено несколько операций поэлементного преобразования векторов (и матриц); все эти операции преобразуют  элементы вектора как элементы обычного одномерного массива чисел.  К таким операциям принадлежат все элементарные математические функции одного аргумента (некоторые были приведены выше). Например, запись Y = sin(X), где Х – известный вектор, приводит к формированию нового вектора Y, элементы которого равны синусу соответствующих элементов вектора Х.

Кроме этих операций предусмотрено несколько операций, которые выполняются с помощью знаков обычных арифметических действий (применяются к векторам одинакового типа и размера):

Добавление числа к каждому элементу вектора (аналогично, вычитание): +  и  -

Поэлементное умножение векторов: .* (перед знаком умножения – точка)

Поэлементное деление векторов: ./ (перед знаком деления – точка)

Поэлементное возведение в степень: .^ (перед знаком степени – точка)

Эти операции позволяют вычислять значения сложных функций, не используя операторы цикла.

 

Пример 1.5:

Вычисление значений функции Y = a*exp(-k*x)*sin(x)  при значениях аргумента x от 0 до 10 с шагом 1 можно выполнить при помощи следующих операторов:

>> a=3; k=0.5;

>> x = 0:1:10;

>>y= a*exp(-k*x).*sin(x)

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

 

Пример 1.6:

Введите в командное окно:

>>A=[2  4  5  8  10; 5  6  8  9  7]

         MatLAB имеет функции, которые позволяют формировать векторы и матрицы определенного вида. Некоторые из них:

zeros(m,n) – создает матрицу m*n с нулевыми элементами;

ones(m,n)- создает матрицу m*n с единичными элементами;

eye(m,n)- создает матрицу m*n с единицами на главной диагонали и остальными

                    нулевыми элементами;

rand(m,n) - создает матрицу m*n из случайных чисел, равномерно

                        распределенных на (0,1);

randn(m,n) - создает матрицу m*n из случайных чисел, распределенных по

                          нормальному закону с нулевым математическим ожиданием и

                          дисперсией, равной 1.

Поэлементное преобразование матриц – аналогично действиям с векторами.

 

Пример 1.7:

>> A = [1,2,3,4,5; -2,3,1,4,8]

>> B = [1,3,5,-2,1;1,8,-3,-1,2]

>> sin(A)

>> A .*B

 

Матричные действия с матрицами:

Базовые действия с матрицами выполняются с помощью обычных знаков арифметических операций. Функция обращения матрицы – inv(A).

 

Пример 1.8:

>> A = [1 2 3 4 5; 6 7 8 9 10]

>>A’

>> B =[ 0 -1 -2 – 3 -4; 5 6 7 8 9]

>> A’*B

>> C=A*B’

>> inv(C)

>> inv(ans)             % для проверки обращение применяется к результату

>> A=[1 2;3 4]

>>A^2                    % действие эквивалентно умножению матрицы на себя

>>A^(-2)                % при отрицательной степени  выполняется умножение

                                    обратной матрицы на себя

 

Действие деления матриц (которого не существует в математике): / (или \).

Действие В/А аналогично действиям  B*inv(A); его удобно использовать для решения матричного уравнения  X*A=B; действие A\B аналогично действиям  inv(A)*B; удобно использовать для решения матричного уравнения A*X=B.

 

Пример 1.9: Требуется решить систему уравнений:

         X1 + 2X2 + 3X3 = 14

        2X1 +   X2  - 5X3 =  -15

         X1 -    X2     X3 =  -4

Решение: >> A=[1 2 3;2 1 -5;1 -1 -1]

                >> B=[14;-15;-4]

                >> x=A\B

 

Операции с полиномами

         Полином хранится в виде вектора, элементами которого являются коэффициенты полинома:

         P = [an … a2  a1  a0]

Некоторые функции:

conv(P1,P2) – умножение двух полиномов;

deconv(P1,P2) – деление полинома P1  на полином P2;

roots(P) – вычисление вектора, элементы которого являются корнями заданного

                полинома;

poly(r) – построение вектора полинома по заданному вектору его корней;

polyval(p,x) – вычисление значения полинома по заданному значению его

                       аргумента;

polyder(p) – вычисление производной от полинома.

 

Пример 1.10:

Найдем корни полинома P(x) = x5 + 8x4 + 31x3 + 80x2 + 94x + 20.

>>p=[1,8,31,80,94,20];

>>disp(roots(p))

Вычислим значение полинома при х=2:

>>y=polyval(p,2);

 

Обработка данных измерений

         Система дает возможность обработки данных, которые заданы в векторной или матричной форме.

max(V) – выдает значение максимального по значению элемента вектора V;

min(V) – выдает значение минимального по значению элемента вектора V;

sort(V) – формирует вектор, элементы которого распределены в порядке

               возрастания из значений;

sum(V) – вычисляет сумму элементов вектора V;

prod(V) – вычисляет произведение всех элементов вектора V;

trapz(x,y) – осуществляет интегрирование методом трапеций (вычисляется

                    площадь под графиком функции y(x), в котором все точки, заданные

                    векторами x и y, соединены отрезками прямых.

 

   Аппроксимация и интерполяция данных

         Система предоставляет удобные процедуры для аппроксимации и интерполяции данных измерений.

polyfit(X,Y,n) – полиномиальная аппроксимация, n – порядок

                           аппроксимирующего полинома; X,Y – вектора аргументов и

                           значений функции; результатом будет вектор коэффициентов

                           полинома длиной (n + 1).

spline(X,Y,Xi) – интерполяция кубическими сплайнами.

 

Пример 1.11:

>> x = [1 2 3 4 5 6 7 8];

>> y = [-1.1  0.2  0.5  0.8  0.7  0.6  0.4  0.1];

>> polyfit(x,y,1)

ans = 0.1143  -0.2393

Это означает, что заданная зависимость аппроксимирована прямой:

          y(x) = 0.1143x – 0.2393

 

Построение графиков

Основной функцией, обеспечивающей построение графиков, является функция plot. Обращение к этой процедуре:

plot(x1,y1,s1,x2,y2,s2.,…)

Здесь x1,y1 - заданные векторы, элементами которых являются массивы значений аргумента  (x1) и функции (y1), соответствующих первой кривой графика; x2,y2 – массивы значений аргумента и функции второй кривой графика и т.д. Переменные s1, s2 являются символьными (их указание не обязательно, они определяют тип линии, тип точки графика и цвет линии).

Графики выводятся в отдельном графическом окне, которое называется фигурой; для нанесения на график координатных линий следует записать после обращения к функции plot функцию grid.

 

Пример 1.12:

Пусть требуется вывести график функции y=3sin(x+π/3) на промежутке от -3π до +3π с шагом π/100.

>>x=-3*pi:pi/100:3*pi;

>>y=3*sin(x+pi/3);

>>plot(x,y), grid

 

Заголовок графика выводится с помощью процедуры title(‘текст’), надписи к осям – процедурами xlabel(‘текст’), ylabel(‘текст’).

 

Пример 1.13:

>>x=-3*pi:pi/100:3*pi;

>>y=-3*sin(x+pi/3);

>>plot(x,y), grid

>>title(‘Функция y=3sin(x+π/3));

>>xlabel(‘x’); ylabel(‘y’)

 

Пример 1.14: Дополним пример 1.11.

Построим в одном графическом окне графики заданной дискретной функции и графики аппроксимирующих полиномов первого, второго, третьего и четвертого порядков:

 

>> x = [1 2 3 4 5 6 7 8];

>> y = [-1.1  0.2  0.5  0.8  0.7  0.6  0.4  0.1];

>> P1=polyfit(x,y,1);

>> P1=polyfit(x,y,2);

>> P1=polyfit(x,y,3);

>> P1=polyfit(x,y,4);

>>stem(x,y);

>>hold

>>x=0.5:0.05:8.5;

>>y1=polyval(P1,x1);

>>y2=polyval(P2,x2);

>>y3=polyval(P3,x3);

>>y4=polyval(P4,x4);

>>plot(x1,y1,x2,y2,x3,y3,x4,y4);

>>grid:

>>title(‘Полиномиальная аппроксимация’);

>>xlabel(‘argument’);

>>ylabel(‘function’)

 

Здесь процедура stem(x,y) используется для  представления графика дискретной функции в виде отдельных вертикальных линий для каждого из значений аргумента; x, y – векторы аргументов и значений функций; для отражения графика дискретной функции на той же фигуре, что и полиномы, после обращения к функции stem записывается функция hold.

         При построении графика функции можно не указывать ее аргумент. В этом случае в качестве аргумента система принимает номер элемента вектора, график которого строится.

 

Пример 1.15:

>> x= [1 3 2 9 6 8 4 9 -6];

>> plot(x)

>> grid

>> title (‘График вектора x')

>> ylabel (‘значения элементов’)

>> xlabel (‘номер элемента’)

 

Более наглядно представить вектор в виде столбчатой диаграммы (функция bar):

>> bar(x)

>> title (‘График вектора x')

>> ylabel (‘значения элементов’)

>> xlabel (‘номер элемента’)

 

        

 

 

2 Программирование в среде MatLAB

 

         Программа создается в окне установленного редактора:

Файл-Создать-M-файл

Существуют программы двух видов: управляющие программы (Script-файлы) и процедуры (файл-функции). Все программы имеют расширение имени файла .m.

Файл-функция имеет первую строку вида:

Function [перечень конечных величин] =

                                         <имя процедуры> (<перечень входных величин>)

Script-файлы такой строки не имеют.

         В файл-функциях все переменные воспринимаются как локальные, в Script-файлах все используемые переменные образуют рабочее пространство (work space), которое является единым для всех Script-файлов, вызываемых в текущем сеансе работы с системой.

 

Оформление М-файлов:

        каждый оператор записывается в отдельной строке; в конце оператора желательно вводить символ «;» (чтобы результат действия оператора не выводился в командное окно;

        можно размещать несколько операторов в одной строке, разделяя их запятой или точкой с запятой;

        длинный оператор можно записывать в несколько строк, при этом предыдущая строка должна заканчиваться тремя точками (…);

        строка комментариев начинается с символа %;

        строки комментариев, предшествующие первому выполняемому оператору программы (должны заканчиваться пустой строкой), воспринимаются системой как описание программы. Эти строки выводятся в командное окно, если набрать в нем help <имя файла>.

        отсутствует оператор окончания текста программы;

        переменные не описываются и не объявляются; их размер устанавливается при вводе значений ее элементов;

        имена переменных могут содержать только буквы латинского алфавита и цифры, начинаются с буквы, число символов в имени – не больше 19-ти, строчные и прописные буквы в именах различаются системой.

 

Пример 2.1:

         Составим М-файл для вычисления значения функции:                                            y = f1(x) = a2*ctg(x)*sqrt(sin4(x) – cos4(x).

Для этого в окне редактора наберем следующий текст:

function y = f1(x, a)

%Процедура вычисления значения функции

% y = f1(x) = a2*ctg(x)*sqrt(sin(x)^4 – cos(x)^4)

%Обращение y = f1(x,a).

y = (a^2)*cot(x).*sqrt(sin(x).^4 – cos(x).^4);

Сохраним этот текст в файле f1.m.

Введем в командное окно команду:

>> y = f1(1, 0.1)

 

Если хотим получить вектор значений функции при различных значениях аргумента, вначале сформируем вектор аргументов:

>> z = 0 : 0.3 : 1.8;

И обратимся к процедуре следующим образом:

>> v = f1 (z,1)

Чтобы получить информацию о созданной процедуре, наберем

>> help f1

 

Пример 2.2:

Оформите текст примера 1.14 как файл-функцию, сопроводив ее необходимыми комментариями.  Для этой процедуры нет необходимости передавать переменные из командного окна. Поэтому первую строку этой процедуры можно оформить следующим образом:   function appr;

Сохраните файл под именем appr.m. Вызовите программу из командного окна. Чтобы получить информацию о созданной процедуре, наберите help appr.

 

Пример 2.3: Измените процедуру примера 2.2 таким образом, чтобы переменные

                    передавались из командного окна.

 

  Некоторые стандартные файл-функции

1  [I, cnt] = quad (‘<имя функции>’, a, b) – процедура вычисления интеграла

    методом квадратур; здесь a, b – нижняя и верхняя границы изменения

    функции;  I – полученное значение интеграла; cnt - число обращений к

    вычислению функции, представленной М-файлом с названием, указанным в

    <имя функции>.

2  ode23, ode45 – интегрирование обыкновенных дифференциальных уравнений;

    обращение к ним имеет вид;

     [t, y] = ode23 (‘<имя функции>’, tspan, y0, options)

     [t, y] = ode45 (‘<имя функции>’, tspan, y0, options)

    где  <имя функции> - строка символов, являющихся именем М-файла, в

    котором вычисляется вектор-функция f(t,y), то есть правые части системы

    ОДУ; y0 – вектор начальных значений переменных состояния; t – массив

    значений аргумента, соответствующих шагам интегрирования; y – матрица

    матрица проинтегрированных значений переменных, в которой каждый

    столбец соответствует одной из переменных состояния, а строка содержит

    значения переменных состояния, соответствующих определенному шагу

    интегрирования; tspan – вектор-строка [t0 tfinal], содержащая начальное и

    конечное значение аргумента; options – необязательные параметры,

    определяющие значения допустимых относительной и абсолютной

    погрешности интегрирования (по умолчанию соответственно 1.0e-3 и 1.0e-6).

3  fmin – нахождение минимума функции одного аргумента;

    обращение:    Xmin = fmin (‘<имя функции>’, X1, X2)

    здесь Xmin – локальный минимум функции в интервале  X1<X<X2;

4  fmins - нахождение минимума функции нескольких аргументов;

    обращение: Xmin = fmins (‘<имя функции>’, X0), X0 – начальное значение

    вектора аргументов;

5  fzero - нахождение нулей (корней) функции одного аргумента;

    обращение; z = fzero ('<имя функции>', x0, tо1, trace)

    здесь x0 – начальное значение аргумента, в окрестности которого

    отыскивается действительный корень функции, tо1 – заданная относительная

    погрешность вычисления корня, trace – обозначение необходимости выводить

    на экран промежуточные результаты,  z – значение искомого корня;

6  fplot -  построение графиков функции одной переменной; отличие от    

    процедуры  plot в том, что не надо предварительно вычислять значения

    функции; обращение: fplot(‘<имя функции>, [<интервал>], n)

    где <интервал> - вектор-строка из двух чисел, задающая нижнюю и

    верхнюю границы изменения аргументов, <имя функции> - имя М-файла с

    текстом процедуры вычисления значения функции по заданному значению

    аргумента, n – количество частей, на которые разбит указанный интервал (по

    умолчанию = 25);

    если обратиться к этой процедуре следующим образом

                 [x, Y] = fplot(‘<имя функции>, [<интервал>], n)

    то график функции не отображается на экране, а вычисляется вектор

    аргументов x и вектор (матрица) Y соответствующих значений указанной    

    функции; в этом случае для построения графика следует обратиться к 

    процедуре  plot(x,Y).

 

Пример 2.4. Найдем число π как значение локального минимума функции y =

                      cos(x) на отрезке [3,4]:

>> Xmin = fmin(‘cos’,3,4)

 

Пример 2.5. Найдем минимум функции y = (x-1)^2 + 3 на отрезке [0,5]. Вначале  

                      сформируем файл-фунцию:

 

 function y = parab (x)

 y = (x-1).^2 + 3

 plot(x,y)

 

Сохраним ее в файле parab.m. Затем в командном окне наберем:

>> x= -5:1:5

>>y=parab(x)

>> xmin = fmin(‘parab’, 0,5)

 

Рассмотрим применение процедур интегрирования обыкновенных дифференциальных уравнений на следующих примерах.

 

Пример 2.5. Требуется решить дифференциальное уравнение

                  y’ = -y,

с начальным условием y(0)= 1.

Откроем окно редактора системы и запишем в нее текст файл-функции:

     function dy=f1(t,y)

     dy=-y

Сохраним файл с именем f1.

В командном окне введем:

>>[t, y] = ode45('f1', [0 5], 1)

 

Здесь мы установили интервал решения уравнения - [0 5], начальное значение переменной состояния – 1, параметр options не указывали.

Система выдаст в командное окно числовые значения переменных. Чтобы просмотреть график, наберите

>>plot(t, y)

 

Пример 2.6. Рассмотрим следующую систему:

 

                  

 

Для решения этой системы создадим М-файл со следующим текстом:

function dy = rigid(t,y)

dy = zeros(3,1);    % вектор-столбец

dy(1) = y(2) * y(3);

dy(2) = -y(1) * y(3);

dy(3) = -0.51 * y(1) * y(2);

Сохраним файл.

Решаем систему на интервале [0 12] с вектором начальных условий [0 1 1]:

 

>> [t,y] = ode45('rigid',[0 12],[0 1 1]);

Отразим решение на графике:

         >> plot(t,y)

 

3.     Моделирование систем в пакете Simulink

 

         Пакет SIMULINK применяется для исследования поведения динамических систем. Ввод характеристик исследуемых систем производится в диалоговом режиме, путем графической сборки схемы соединений стандартных элементарных звеньев. В результате такой сборки образуется модель исследуемой системы, которую называют S-моделью.  Модель хранится в файле с расширением .mdl. Для построения S-модели используются блоки из библиотеки SIMULINK. Состав библиотеки может быть пополнен пользовательскими блоками.

Библиотека блоков SIMULINK представляет собой набор визуальных объектов, используя которые можно собирать, как из кубиков, произвольную конструкцию.

Для любого блока можно получать требуемое число копий и использовать каждую из них абсолютно автономно. Более того, практически для всех блоков существует возможность индивидуальной настройки: пользователь может изменить как внутренние параметры блоков (например, количество входов), так и внешнее оформление (размер, цвет, имя и т. д.).

На порядок соединения блоков друг с другом также не накладывается ни­каких ограничений. Конечно, при связывании блоков необходимо соблюдать определенные правила, о которых будет сказано чуть позже, однако они обусловлены в основном логикой работы самой модели, а не специальными требованиями SIMULINK.

Для удобства работы пользователя библиотека блоков разбита на семь разделов. Шесть из них являются базовыми и не могут изменяться пользователем (за исключением внешнего оформления):

        Описание состава и назначения блоков  SIMULINK приведено в Приложении.

         Запуск пакета: Файл-Создать-Модель или соответствующая кнопка на панели инструментов. Необходимые блоки выбираются из соответствующих разделов библиотеки и с помощью мыши переносятся в окно создаваемой модели (по умолчанию это окно называется Untitled). Блоки соединяются с помощью линий, которые рисуем с помощью мыши (как от входного порта к выходному, так и наоборот).

         В процессе построения блок-схем все операции с объектами основаны на использовании известной технологии Drag-and-Drop (например, выделение, копирование, перестановка, отсоединение, удаление, изменение размеров, установка параметров блоков, создание соединительных линий и т.д.)

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

 

Пример 3.1. Необходимо синтезировать комбинационное цифровое устройство (КЦУ) на элементах И-НЕ на три входа, выходной сигнал которого совпадает с большинством входных сигналов. Это словесное описание условий функционирования КЦУ. Ему соответствует таблица истинности:

 

№ набора

X3

X2

X1

y

1

2

3

4

5

6

7

8

0

0

0

0

1

1

1

1

0

0

1

1

0

0

1

1

0

1

0

1

0

1

0

1

0

0

0

1

0

1

1

1

 

Соберем схему модели непосредственно по таблице истинности (рисунок 1):

- в окне модели расположите три блока Constant – для входных сигналов;

- преобразование входного сигнала в соответствии с заданной таблицей

  истинности  обеспечивает блок Combinatorial Logic (раздел Nonlinear). Так как 

  на вход этого блока может поступать только один сигнал, для объединения всех  

  входов  используйте  блок Mux. Блок Combinatorial Logic имеет единственный

  параметр настройки — Truth table (таблица истинно­сти), который представляет

  собой список возможных выходных значений автома­та. При задании таблицы

  истинности необходимо соблюдать два основных правила:

а) число строк таблицы должно быть равно 2n, где п — число элементов

     (размерность) входного сигнала;

б) входы таблицы считаются заданными.+

-         сформированный выходной сигнал выведите в блок Display.

 

В процессе синтеза КЦУ подразумевается необходимость минимизации аппаратных затрат на реализацию устройства. Чтобы выполнить условие задачи -  синтезировать КЦУ на элементах И-НЕ на три входа, используем для моделирования совершенные нормальные формы (СНФ).

Формула в СДНФ (совершенная нормальная дизъюнктивная форма): 

                                                (1)

После преобразований:  

Используя правила минимизации: 

 

                                                            (2)

         Для создания модели, описывающей работу цифрового устройства на базе формулы (1), используются блоки логических операций (LogicalOperator) – рисунок 1.

 

Пример 3.2. Пакет MatLAB используется для исследования асинхронного двигателя в схеме асинхронного вентильного каскада (АВК). На кафедре ЭиАПУ разработаны имитационные модели структурной и электрической схем АВК[1]. На этих моделях можно выполнить серию экспериментов и получить характеристики объекта (влияние величины напряжения управления и нагрузки на характер переходных процессов, оценку соответствия установившихся значений параметров заданным и т.д.). На рисунке 2 приведена имитационная модель структурной схемы АВК, которая имеет вид последовательно соединенных звеньев. В эти звенья введены соответствующие передаточные функции с расчетными данными.

 

Пример 3.3. Математическая модель динамических процессов в топке котельного агрегата (объект с сосредоточенными параметрами) представляется в виде системы обыкновенных дифференциальных уравнений[2]. Решение этой системы дает возможность получить закон изменения температуры газов и температуры слоя загрязнений во времени, которые могут быть использованы для регулирования процесса сжигания топлива.

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

 

 

Здесь ∆t – температура топочных газов, ∆t1 – температура слоя отложений, ∆Bp – расход воздуха, ∆tB температура воздуха, τ - время, a1,…,a6  – расчетные коэффициенты модели.

Структурная схема модели представлена на рисунке 3. Чтобы не загромождать диаграмму и для повышения наглядности блоки расчетов по каждому уравнению системы оформлены как подсистемы (блок Subsystem из раздела Connection). Блоки Scope позволяют в процессе моделирования наблюдать динамику изменения интересующих исследователя характе­ристик системы. Создаваемое с помощью блока Scope «смотровое окно» напоминает экран измерительного прибора. В подсистемах для расчета коэффициентов модели и текущих значений температур (газов и шлаков) используются блоки Fcn, Product (раздел Nonlinear), Sum (раздел Linear), Constant (раздел Sources). 

 

4.     Цифровая обработка сигналов (Signal Processing Toolbox)

 

         Пакет Signal Processing Toolbox позволяет проектировать (рассчитывать конкретные числовые характеристики) цифровые и аналоговые фильтры по их требуемым амплитудно- и фазо-частотным характеристикам, формировать последовательности типовых временных сигналов и обрабатывать их спроектированными фильтрами. В пакет входят процедуры, осуществляющие преобразования Фурье, Гильберта, а также статистический анализ. Пакет позволяет рассчитывать корреляционные функции, спектральную плотность мощности сигнала, оценивать параметры фильтров по измеренным отсчетам входной и выходной последовательностей.

 

Формирование типовых процессов

         Процедура rectpuls обеспечивает формирование одиночного импульса прямоугольной формы. Обращение к процедуре:

 y = rectpuls (t, w).

Здесь y – вектор значений сигнала импульса единичной амплитуды, шириной w, центрированного относительно t = 0 по заданному вектору t моментов времени. Если ширина импульса w не указана, ее значение по умолчанию принимается равным единице.

 

Пример 4.1:

>> t = 0 : 0.1 : 10;

>> y = 0.75*rectpuls(t-3,2) + 0.5*rectpuls(t-8, 0.4)…

     + 1.35*rectpuls(t-5, 0.8);

>> plot(t,y), grid, set(gca, ‘FontName’, ‘Arial Cyr’, “FontSize’, 16)

>> title (‘Пример применения процедуры RECTPULS’)

>>xlabel (‘Время (с)’)

>>ylabel (‘Выходной процесс y(t)’)

 

         Формирование импульса треугольной формы единичной амплитуды можно осуществить при помощи процедуры tripuls, обращение к которой имеет вид:

         y= tripuls (t, w, s)

         Аргументы y, t, w  имеют тот же смысл. Аргумент s (-1 < s <1) определяет наклон треугольника. Если s = 0 или не указан, треугольный импульс имеет симметричную форму.

 

Пример 4.2:

>> t = 0 : 0.1 : 10;

>> y = 0.75*tripuls(t-1, 0.5) + 0.5*tripuls(t-5, 0.5, -1)…

     + 1.35*tripuls(t-3, 0.8, 1);

>> plot(t,y), grid, set(gca, ‘FontName’, ‘Arial Cyr’, “FontSize’, 16)

>> title (‘Пример применения процедуры TRIPULS’)

>>xlabel (‘Время (с)’)

>>ylabel (‘Выходной процесс y(t)’)

 

         Для формирования импульса, являющегося синусоидой, модулированной функцией Гаусса, используется процедура gauspuls. Если обратиться к ней по форме:

         y= gauspuls (t, fc, bw),

то она создает вектор значений указанного сигнала с единичной амплитудой, изменяющейся с частотой fc Гц и с шириной bw полосы частот сигнала. Если два последних аргумента не указаны, они по умолчанию приобретают значения 1000 Гц и 0,5 соответственно.

 

Пример 4.3:

>> t = 0 : 0.1 : 10;

>> y = 0.75*gauspuls(t-3, 1, 0.5);

>> plot(t,y), grid, set(gca, ‘FontName’, ‘Arial Cyr’, FontSize’, 16)

>> title (‘Пример применения процедуры GAUSPULS’)

>>xlabel (‘Время (с)’)

>>ylabel (‘Выходной процесс y(t)’)

 

         Процедуры  sin(x), cos(x) формируют колебания, состоящие из конечного числа гармонических составляющих.

 

Пример 4.4:

>> t = 0 : 0.01 : 50;

>> y = 0.7*sin(pi * t/5);

>> plot(t,y), grid, set(gca, ‘FontName’, ‘Arial Cyr’, “FontSize’, 16)

>> title (‘Гармонические колебания y = 0.7*sin(pi * t/5)

>>xlabel (‘Время (с)’)

>>ylabel (‘Выходной процесс y(t)’)

 

         Процесс, являющийся последовательностью прямоугольных импульсов с периодом 2π  для заданной в векторе t последовательности отсчетов времени, генерируется при помощи процедуры  square. Обращение:

         y = square (t, duty),

где аргумент duty определяет длительность положительной полуволны в процентах от периода волны.

 

Пример 4.5:

>> y = 0.7*square(pi*t/5, 40);

>> plot(t,y), grid, set(gca, ‘FontName’, ‘Arial Cyr’, “FontSize’, 16)

>> title (‘Прямоугольные волны y = 0.7*square(pi*t/5, 40);

>>xlabel (‘Время (с)’)

>>ylabel (‘Выходной процесс y(t)’)

 

         Генерирование пилообразных и треугольных колебаний выполняется процедурой sawtooth. Обращение:

         y= sawtooth (t, width)

Параметр width определяет часть периода, в которой сигнал увеличивается.

 

Пример 4.6:

>> y = 0.7* sawtooth (pi*t/5, 0.5);

>> plot(t,y), grid, set(gca, ‘FontName’, ‘Arial Cyr’, “FontSize’, 16)

>> title (‘Прямоугольные волны y = 0.7* sawtooth (pi*t/5, 0.5);

>>xlabel (‘Время (с)’)

>>ylabel (‘Выходной процесс y(t)’)

 

Процедура pulstran позволяет формировать колебания, являющиеся последовательностью прямоугольных, либо треугольных, либо гауссовых импульсов. Обращение

          y = pulstran (t, d, ‘func’, p1, p2, …)

Здесь d определяет вектор значений тех моментов времени, где должны быть центры соответствующих импульсов; параметр func определяет форму импульсов; параметры p1, p2,… определяют необходимые параметры импульса в соответствии с формой обращения к процедуре, определяющей этот импульс.

 

Пример 4.7:

>.> t= 0 : 0.01 : 50;

>> d = [0 : 50/5 : 50];

>> y = 0.7* pulstran (t, d, ‘tripuls’, 5);

>> plot(t,y), grid, set(gca, ‘FontName’, ‘Arial Cyr’, FontSize’, 16)

>> title (‘y = 0.7* pulstran (t, d, ‘tripuls’, 5’);

>>xlabel (‘Время (с)’)

>>ylabel (‘Выходной процесс y(t)’)

 

Аналогично сформируйте  последовательность прямоугольных и гауссовых импульсов.

 

Общие средства фильтрации

         Для контроля и графического представления передаточной функции любого линейного динамического звена удобно использовать процедуруfreqs. Обращение к ней:

         h = freqs (b, a, w)

         Процедура создает вектор h комплексных значений частотной характеристики W(jω) по передаточной функции W(s) звена, заданной векторами коэффициентов ее числителя – b и знаменателя - a, а также по заданному вектору w частоты ω. Если аргумент w не указан, процедура автоматически выбирает 200 отсчетов частоты, для которых вычисляется частотная характеристика. Если не указана выходная величина, процедура выводит в текущее графическое окно два графика - АЧХ и ФЧХ.

 

Пример 4.8: Передаточная функция имеет вид

W (s) = a/(s2 + 2*ξ*ω0*s + ω02 )

Выведем графики АЧХ и ФЧХ.

>> T0 =1; dz =0.05;

>> om0 = 2*pi/T0; A = 1;

>>a1(1) = 1; a1(2) = 2*dz*om0; a1(3) = om0^2; b1(1)=A;

>>freqs (b1,a1)

 

         Чтобы получить дискретную частотную характеристику по дискретной передаточной функции, заданной векторами значений ее числителя b и знаменателя a,  используется процедура

         y = freqz (b, a)

 

Спектральный анализ процессов

         Функции fft (Fast Fourier Transformation) и ifft (Invers Fast Fourier Transformation) осуществляют преобразования заданного вектора, соответствующие дискретному прямому и обратному преобразованию Фурье. Обращение:

y = fft ( x, n ); x = ifft ( y, n),

где n - число элементов заданного вектора (а также и выходного вектора).

 

Пример 4.9:

>> t = 0 : 0.001 :2;

>> x = sin(2*pi*5*t) + cos(2*pi*12*t);          %Формируем входной процесс

>> plot (t, x); grid

>> set (gca, ‘FontName’, ‘Arial Cyr’, ‘Fontsize’, 16);

>> title (‘Входной процесс’);

>> xlabel (‘Время’);

>> ylabel (‘x(t)’)

>> y = fft (x);

>> a = abs (y);

>> plot (a); grid

>> set (gca, ‘FontName’, ‘Arial Cyr’, ‘Fontsize’, 16);

>> title (‘Модуль Фурье-изображения’);

>> xlabel (‘Номер элемента вектора’);

>> ylabel (‘abs(F(x(t)’)

 

         Выполним обратное преобразование.

 

Пример 4.10:

>> x = ifft (y);

>> plot (t, x); grid

>> set (gca, ‘FontName’, ‘Arial Cyr’, ‘Fontsize’, 16);

>> title (‘Обратное Фурье-преобразование);

>> xlabel (‘Номер элемента вектора’);

>> ylabel (‘x(t)’)

 

         Для определения массива Фурье-изображения с целью построения графика Фурье-изображения в частотной области используется процедураfftshift.

 

Пример 4.11:

>> f1 = -500 : 0.5 :500;

>> v = fffshift (y);

>> a = abs (v);

>> plot (f1(970:1030), a(970:1030)); grid

>> set (gca, ‘FontName’, ‘Arial Cyr’, ‘Fontsize’, 16);

>> title (‘Модуль Фурье-изображения’);

>> xlabel (‘Частота (Гц)’);

>> ylabel (‘abs(F(x(t)’)

 

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

 

Пример 4.12:

>> N = length (y);

>> a = abs (v)/N;

>> plot (f1(970:1030), a(970:1030)); grid

>> set (gca, ‘FontName’, ‘Arial Cyr’, ‘Fontsize’, 16);

>> title (‘Модуль Фурье-изображения’);

>> xlabel (‘Частота (Гц)’);

>> ylabel (‘abs(F(x(t)/N’)

 

         Фильтрация осуществляется процедурой filter следующим образом:

         y = filter (b, a, x),

где x – заданный вектор входного сигнала; y - вектор значений выходного сигнала фильтра, получаемого в результате фильтрации; b - вектор коэффициентов числителя дискретной передаточной функции фильтра; a - вектор коэффициентов знаменателя этой функции.

Эта функция обеспечивает формирование вектора y по заданным  b, a, x, в соответствии с конечно-разностным уравнением фильтра с дискретной передаточной функцией вида рациональной дроби:

 

y(k) = b(1)*x(k) + b(2)*x(k-1) + b(nb+1)*x(k-nb)-

-         a(2)*y(k-1) – a(3)*y(k-3) -… - a(na+1)*y(k-nb),

 где b=[b(1),…,b(nb+1)], a=[1,a(2),…,a(nb+1)].

 

Пример 4.13: Пусть требуется получить достаточно верную информацию о некотором полезном сигнале (Yp) синусоидальной формы с периодом T1 = 1 и амплитудой A1 = 0.75, к которому добавился шум первичного преобразователя в виде более высокочастотной синусоиды с периодом T2 = 0.2 и амплитудой A2 = 5, а в результате измерения еще добавился белый гауссовый шум измерителя с интенсивностью Aш = 5. Сформируем этот сигнал как вектор его значений в дискретные моменты времени с дискретом  Ts = 0.001. В результате получим такой измеренный сигнал x(t):

 

>> Ts = 0.001;

>> t =0 : Ts :20;

>> A1 =0.75; T1 = 1;

>> T2 = 0.2; A2 = 10; eps = pi/4;

>> Ash = 5;

>> x = A1.*sin92*pi*t./T1 + A2.*sin(2*pi.*t./T2+eps) + …

   Ash*randn(1, length(t));

>> plot (t(10002:end),x(10002:end), grid, set(gca,‘FontName’, …

   ‘ArialCyr’, ‘FontSize’, 16),

>> title(‘Входной процесс’);

>> xlabel (‘Время ( с )’);

>> ylabel (‘X(t)’)

 

          Требуется так обработать измеренные данные x(t), чтобы восстановить по ним полезный сигнал как можно точнее. Период собственных колебаний фильтра должен быть равен периоду колебаний полезного сигнала Tф = T1. Чтобы после прохождения через фильтр амплитуда восстановленного сигнала совпадала с амплитудой полезного сигнала, нужно входной сигнал фильтра домножить на постоянную величину 2ξω02 . Сформируем этот фильтр, пропустим через него сформированный процесс, для сравнения на одном графике отобразим и восстанавливаемый процесс:

 

Пример 4.14:

>> T1 = 1; Tf = T1; dz = 0.05;

>> om0=2*pi/Tf; A=1; oms = om0*Ts;

>> a(1)=1+2*dz*oms+oms^2;

>> a(2)=-2*(1 + dz*oms);

>> a(3)= 1;

>> b(1)=A*Ts*Ts*(2*dz*om0^2);

>> Yp=A1*sin(2*pi*t/T1);

>> y=filter(b,a,x);

>> plot(t(1002:end), y(t(1002:end),t(1002:end), Yp(1002:end), grid,…

     set (gca,’ ,‘FontName’,  ‘ArialCyr’, ‘FontSize’, 16),

>> title(‘Процесс на выходе фильтра');

>> xlabel (‘Время ( с )’);

>> ylabel (‘Y(t)’)

 

         Чтобы избежать фазовых искажений полезного сигнала при его восстановлении, можно воспользоваться процедурой двойной фильтрации –filtfilt.

 

Пример 4.15:

>> y = filtfilt (b,a,x)

>> plot(t, y, t, Yp, grid, set (gca,’ ,‘FontName’,  ‘ArialCyr’, ‘FontSize’, 16)

>> title(‘Применение процедуры filtfilt’);

>> xlabel (‘Время ( с )’);

>> ylabel (‘Y(t)’)

 

Статистический анализ процессов

Определение спектральной плотности выполняется процедурой psd.

Обращение: [S,f] = psd (x, nfft, Fmax),

где x – вектор заданных значений процесса, nfft - число элементов вектора, которые обрабатываются процедурой fft, Fmax = 1/Ts - значение частоты дискредитации сигнала,  S - вектор значений СП сигнала, f – вектор значений частот, которым соответствуют найденные значения СП. В общем случае длина двух последних векторов равна nfft/2.

 

Пример 4.16:

>> [C,f] = psd (y1, dovg, Fmax);

>> subplot

>> stem (f(1:200), C(1:200)), grid,

>> set (gca,’ ,‘FontName’,  ‘ArialCyr’, ‘FontSize’, 16),

>> title (‘Спектральная плотность');

>> xlabel (‘Частота (Гц)’);

 

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

 

Пример 4.17:

>> psd (y1, dovg, Fmax)

 

Здесь значения СП откладываются в логарифмическом масштабе в децибелах.

 

Группа функций xcorr вычисляет оценку взаимной корреляционной функции (ВЛФ) двух последовательностей x и y  . Обращение:

c= xcorr (x, y)

вычисляет и выдает вектор  c длины 2N-1 значений ВКФ векторов x и y  длины N. Также позволяет вычислить автокорреляционную функцию (АКФ) последовательности, заданной в векторе x .

 

Пример 4.18:

>> R = xcorr (y1);

>> tau = -10+Ts : Ts : 10;

>> lt = length (tau);

>> s1r = round (length ( R) /2 – lt/2;

>> s2r = round (length ( R) /2 + lt/2 -1;

>> plot (tau, R (s1r:s2r), grid

>> set (gca,’ ,‘FontName’,  ‘ArialCyr’, ‘FontSize’, 16),

>> title (‘АКФ случайного процесса');

>> xlabel (‘Запаздывание (с)’);

 

Мы не рассматривали здесь вопросы проектирования фильтров в MatLab, а также интерактивную оболочку SPTool, содержащую средства поиска и просмотра сигналов (Signal Browser), проектировщик фильтров (Filter Designer), средство просмотра характеристик фильтров (Filter Viewer), средство просмотра спектра (Spectrum Viewer).

 

5. Исследование линейных стационарных систем (пакет Control Toolbox)

 

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

 

Ввод и преобразование моделей

         Ввод модели линейной стационарной системы (русскоязычное сокращение ЛСС, здесь же LTI - линейные,  инвариантные во времени системы) в среду пакета CONTROL  возможен в трех формах – в форме матриц пространства состояния, в виде коэффициентов числителей и знаменателей передаточных функций и в форме задания нулей, полюсов и коэффициента передачи системы.

         Некоторые процедуры создания LTI-моделей:

ss      - создает модель пространства состояния по заданным матрицам

         уравнений состояния системы;

dss    - создает аналогичную модель  по описанию пространства состояния

         более общего вида, когда уравнения переменных состояния не

         разрешены относительно производных;

tf       - создает модель по заданным передаточным функциям системы

zpk   -  создает модель по заданным нулям, полюсам и коэффициентам

        передачи системы;

filt   - создает модель по дискретным передаточным функциям, записанным в

       форме полиномов от z—1.

set  - присваивает значения некоторым другим полям –объектов (названиям

      входов и выходов, названиям системы и т.д.).

Указанные процедуры позволяют создавать как непрерывные, так и дискретные модели. Также они применяются для преобразования моделей из одной из указанных форм в другую.

 

Пример 5.1:

>> v = tf ([1  4], [1  2   100])

 

         В MatLab предусмотрена возможность «набирать» программно «схему» САУ путем предварительного ввода моделей звеньев и последующего «соединения» этих звеньев в единую структуру. Однако более простым и удобным средством создания систем из отдельных блоков является интерактивная система Simulink,  рассмотренная в п.3.

 

Чтобы получить отдельные характеристики (матрицы и векторы, описывающие пространство состояния, коэффициенты числителя и знаменателя передаточной функции и т.д.) полученной модели используются процедуры:

tfdata   - для получения векторов числителя и знаменателя передаточной

                функции системы;

ssdata   - для получения значений матриц уравнений пространства состояния;

zpkdata - для получения векторов значений полюсов и нулей системы.

get        - дает возможность получить полную характеристику модели.

 

         Пакет предоставляет широкий набор процедур, осуществляющих анализ САУ с самых различных точек зрения и, прежде всего, определение откликов системы на внешние воздействия как во временной, так и в частотной области:

impulse - нахождение отклика на единичное импульсное входное

                 воздействие;

step        - нахождение реакции системы на единичный скачок входного

                воздействия;

initial    - определение собственного движения системы при произвольных 

                 начальных условиях;

lsim      - определение реакции системы на входное воздействие

               произвольной формы, задаваемое в виде вектора его значений во

               времени.

Кроме того: процедуры представления реакции системы на внешние гармонические воздействия в частотной области (bode, nyquist, nichols,sigma); процедуры, вычисляющие отдельные характеристики и графически показывающие расположение полюсов и нулей системы (pole, zpkdata,gramdamp, pzmap, rlocus).

         Если в командном окне набрать ltview, то можно вызвать окно обозревателя LTI–объектов и в интерактивном режиме строить все графики, причем для нескольких систем одновременно.

 

         Некоторые процедуры, используемые для синтеза САУ:

lqr, lqry    - осуществляют проектирование  линейно-квадратичного

                     оптимального регулятора для систем непрерывного времени;

lqrd, dlqr  - для проектирования дискретного оптимального линейно-

                     квадратичного регулятора;

kalman     - выполняет расчет фильтра Калмана для непрерывных или

                    дискретных САУ.

 

Список литературы

1. Гультяев А, Имитационное моделирование в среде Windows. – С-Пб.:                                            “КОРОНАпринт”, 1999.                                                                                               2. Лазарев Ю. MatLAB 5.x. – Киев: «Ирина», BHV, 2000.

 

 

Содержание

 

 

стр

 

 

1. MatLAB как научный калькулятор

3

2. Программирование в среде MatLAB

10

3. Моделирование систем в пакете Simulink

13

4. Цифровая обработка сигналов (Signal Processing Toolbox)

18

5. Исследование линейных стационарных систем (пакет Control Toolbox)

27

    Список литературы

29

    Приложение

30

 

ПРИЛОЖЕНИЕ

        БИБЛИОТЕКА МОДУЛЕЙ (БЛОКОВ) SIMULINK

Библиотека блоков SIMULINK представляет собой набор визуальных объектов, используя которые можно собирать, как из кубиков, произвольную конструкцию.

Для любого блока можно получать требуемое число копий и использовать каждую из них абсолютно автономно. Более того, практически для всех блоков существует возможность индивидуальной настройки: пользователь может изменить как внутренние параметры блоков (например, количество входов), так и внешнее оформление (размер, цвет, имя и т. д.).

На порядок соединения блоков друг с другом также не накладывается ни­каких ограничений. Конечно, при связывании блоков необходимо соблюдать определенные правила, о которых будет сказано чуть позже, однако они обусловлены в основном логикой работы самой модели, а не специальными требованиями SIMULINK.

Для удобства работы пользователя библиотека блоков разбита на семь разделов. Шесть из них являются базовыми и не могут изменяться пользователем (за исключением внешнего оформления):

• Sources (Источники),

• Sinks (Получатели),

• Discrete (Дискретные элементы),

• Linear (Линейные элементы),

• Nonlinear (Нелинейные элементы),

• Connections (Соединения).

Седьмой раздел  Blocksets &Toolboxes (Наборы блоков и инструменты) — содержит блоки, относящиеся к компонентам MATLAB, включенным пользователем в рабочую конфигурацию пакета. При этом для каждой компоненты создается свой подраздел библиотеки. При минимальной рабочей конфигурации в разделе Blocksets &Toolboxes имеется только один подраздел - SIMULINK Extras (Дополнение к SIMULINK).Этот подраздел, в свою очередь, разбит на шесть частей, три из которых являются дополнением к одноименным основным разделам библиотеки, а три других имеют самостоятельное значение. Это наборы блоков Transformations (блоки пересчета координат и шкал температуры), Flip-Flops (блоки, соответствующие основным типам триггеров): Linearization (содержит единственный блок, реализующий функцию линейной аппроксимации).

Каждый блок, входящий в библиотеку SIMULINK, имеет по крайней мере один параметр настройки. Задавая требуемое значение параметра (или выбирая его из предлагаемого меню), пользователь имеет возможность скорректировать функ­цию, реализуемую данным блоком. Чтобы открыть окно настройки параметров, нужно дважды щелкнуть на изображении блока. Однако возможность изме­нять значения параметров появляется только после того, как блок будет помещен в окно блок-диаграммы.

Окна настройки параметров всех библиотечных блоков имеют идентичную структуру и содержат краткую характеристику блока, поля ввода (или выбора) значений параметров блока и 4 кнопки:

• Apply  применить;

• Revert  вернуть предыдущее значение параметров;

• Help  вызов файла помощи в формате html;

• Close  закрыть окно настроек.

Измененные значения параметров вступают в силу после «нажатия» кнопки Apply. Чтобы запустить модель на исполнение с новыми параметрами, закрывать окно настроек не обязательно.

Вернемся к основным разделам библиотеки SIMULINK. Как уже было сказа­но, их шесть.

 

Раздел Sources (Источники)                                                                      Блоки, входящие в этот раздел, предназначены для формирования сигналов, обеспечивающих управление работой модели в целом или отдельных ее частей - блоки-источники имеют по одному выходу и не имеют входов.

Итак, в качестве источников сигналов (входных величин) могут использоваться следующие блоки:

Constant — формирует постоянную величину (скаляр, вектор или матрицу);

Signal Generator — создает непрерывный сигнал произвольной формы;

Step  генерирует единичный дискретный сигнал с заданными параметрами;

Ramp — создает линейно возрастающий (убывающий) сигнал;

Sine Wave — генератор гармонических колебаний;

Discrete Pulse Generator — генератор дискретных импульсных сигналов;

Chirp Signal — генератор гармонических колебаний переменной частоты;

Clock — источник непрерывного временного сигнала;

Digital clock — формирует дискретный временной сигнал;

Random Number — источник дискретного сигнала, амплитуда которого является случайной величиной, распределенной по нормальному закону;

Uniform Random Number — источник дискретного сигнала, амплитуда которо­го является равномерно распределенной случайной величиной;

Band-Limited White Noise — генератор «белого шума» с ограниченной полосой.

Следующие два блока из раздела Источники отличаются от перечисленных тем, что обеспечивают использование в модели различных числовых данных, полученных ранее как с помощью SIMULINK, так и  другими средствами MATLAB.

Первый из них — From File - предназначен для ввода в модель данных, хра­нящихся в МАТ-файле.

Второй  From Workspace — обеспечивает ввод в модель данных непосред­ственно из рабочей области MATLAB.

Структура данных в МАТ-файле представляет собой многомерный массив с переменным числом строк, которое определяется числом регистрируемых пе­ременных. Элементы первой строки содержат последовательные значения мо­дельного времени, элементы в других строках — соответствующие им значе­ния переменных.

Как и другие библиотечные блоки, блоки — «источники» могут настраиваться пользователем (за исключением блока Clock, работа которого основана на исполь­зовании аппаратного таймера компьютера).

Блок Step. Он обеспечивает формирование единичного управляющего сигна­ла, который может использоваться в любой точке модели. Блок имеет 3 параметра настойки:

• Step time (Шаг времени) — определяет длительность сигнала, исходное зна­чение параметра равно 1.

• Initial value (Начальное значение) — задает значение амплитуды сигнала в начальный момент времени; исходное значение — 0.

• Final value (Конечное значение) — задает значение амплитуды сигнала по ис­течении шага моделирования; исходное значение этого параметра равно 1.

Блок Discrete Pulse Generator. Окно настроек блока позволяет изменять значения пяти параметров:

• амплитуды сигнала (Amplitude),

• величины периода сигнала (Period),

• ширины импульса (Pulse width),

• величины задержки сигнала (Phase delay),

• шаг изменения модельного времени (Sample time).

Значения параметров 2...4 должны задаваться как целое число шагов модельного времени (number of samples). Поэтому выбор значений параметров блока целесооб­разно начинать с выбора величины Sample time. Размер шага можно указать как в фор­ме константы, так и в форме вычисляемого выражения. Если вычисленное значение является дробным, оно округляется до целого. Аналогично может быть задано и зна­чение амплитуды, но в случае дробной величины округление не производится.

Блок Random Number обеспечивает формирование сигналов, амплитуда ко­торых является случайной величиной, распределенной по нормальному закону с заданными параметрами. Блок имеет четыре параметра настройки. Первые два — Mean и Variance  являются параметрами нормального закона (среднее и дисперсия), третий — Initial seed  задает начальное значение для инициализации генератора последовательности случайных чисел. При фикси­рованном значении этого параметра генератор всегда вырабатывает одну и ту же последовательность СЧ. Четвертый параметр (Sample time) используется так же, как и в рассмотренных ранее блоках.

Блок Uniform Random Number обеспечивает формирование сигналов, амп­литуда которых является случайной величиной, распределенной равномерно в заданном интервале.

В блоке имеются такие же параметры настройки Initial seed и Sample time, как и в Random Number. Еще два параметра (Minimum и Maximum)задают диапазон распределения СВ.

Блок Digital Clock. Этот блок имеет единственный параметр настройки — ве­личину шага изменения модельного времени (Sample time).Величина шага за­дается таким же образом, как и в блоке Discrete Pulse Generator. Если величина шага задана выражением, то оно вычисляется только однажды, и полученное зна­чение используется на всем интервале моделирования. Особенность блока Digital Clock состоит в том, что он не только формирует величину шага, но и вычисляет новое значение модельного времени, которое используется для проверки усло­вия окончания моделирования. Очередное значение модельного времени вычис­ляется как сумма предыдущего значения и величины шага моделирования.

Блок From File имеет в качестве параметра настройки имя МАТ-файла, из ко­торого будут считываться требуемые данные. Если указывается только имя файла, то поиск файла производится в открытой папке. При необходимости можно указать полный путь доступа к файлу. После закрытия окна настроек имя файла выводится на изображении блока. Немного забегая вперед отметим, что в разделе библиотеки Получатели имеется блок ТоFile, который выполняет запись резуль­татов моделирования в МАТ-файл.

Блок From Workspace, как было сказано ранее, обеспечивает использование в модели данных, хранящихся в рабочей области (собственной оперативной па­мяти) MATLAB. Блок имеет один составной параметр настройки, который пред­ставляет собой упорядоченный список используемых данных, заключенный в квад­ратные скобки. Список должен содержать не менее двух элементов, первым из которых явля­ется вектор значений модельного времени с именем tout. Остальные элементы спис­ка представляют собой векторы значений вводимых из рабочей области величин. Длина каждого из этих векторов должна быть равна длине вектора tout. Как пра­вило, в качестве элементов списка данных используются величины, помещенные в рабочую область MATLAB с помощью блока То Workspace, входящего в раздел библиотеки Sinks (Получатели).

 

Раздел Sinks (Получатели)                                                                       Блоки, собранные в этом разделе, различаются по функциональному предназначению.

Условно их можно разделить на три вида:

1) блоки, используемые при моделировании в качестве «смотровых окон». К ним относятся:

блок Scope - описан ниже;

блок XYGraph, обеспечивающий создание двумерных графиков в прямоугольной системе координат;

блок Display, предназначенный для отображения численных значений величин:

2) блоки, обеспечивающие сохранение промежуточных и/или выходных результатов моделирования:

блок То File;

блок То Workspace;

3) блок управления моделированием  Stop Simulation, который позволяет прервать моделирование при выполнении тех или иных условий. Блок срабатывает в том случае, если на его вход поступает ненулевой сигнал.

Блок Scope. Этот блок позволяет в процессе моделирова­ния наблюдать динамику изменения интересующих исследователя характе­ристик системы. Создаваемое с его помощью «смотровое окно» напоминает экран измерительного прибора. Открыть окно Scope можно только после того, как блок помещен па поле блок-диаграммы. Размер и пропорции окна можно изменять произвольно, ис­пользуя курсор мыши.

По оси ординат шкалы измерений откладываются значения наблюдаемой величины, по оси абсцисс — значения модельного времени. По умолчанию для оси ординат используется диапазон [-5; 5], а для оси модельного време­ни - [0; 10].

Блок-диаграмма может быть построена таким образом, чтобы на вход блока Scope поступала векторная величина. В этом случае для каждого элемента векто­ра в окне строится отдельная кривая, отражающая динамику его изменения. Вы­водимые кривые различаются цветом, который устанавливается автоматически. Одновременно в окне Scope может отображаться до 30 кривых.

Для управления параметрами окна Scope в нем имеется панель меню, содер­жащая семь кнопок

1 — изменение масштаба осей графика;

2 — изменение масштаба по оси абсцисс;

3 — изменение масштаба по оси ординат;

4 — автоматическая установка оптимального масштаба осей (автошкалирование);

5 - сохранение установленного масштаба осей;

6 — вызов диалогового окна настройки параметров блока Scope;

7 — печать содержимого окна Scope.

Кнопки 1 ...З являются альтернативными, т. е. в каждый момент времени может быть «нажата» только одна из них.

Для изменения масштаба по выбранной оси координат необходимо:

• «нажать» соответствующую кнопку изменения масштаба;

• подвести курсор мыши к тому участку графика, который должен быть ото­бражен в новом масштабе;

• нажать клавишу мыши (один раз!).

Первое нажатие приводит к четырехкратному увеличению масштаба, каж­дое последующее дает увеличение масштаба в два раза.

При «нажатии» кнопки 6 открывается окно Properties: Scope, содержащее две вкладки:

• Axes (оси), позволяющая устанавливать параметры осей графика;

• Setting (установки), предназначенная для ввода значений дополнительных параметров блока Scope.

В нижней части окна расположены кнопки, аналогичные кнопкам окон настрой­ки параметров других библиотечных блоков: Apply (Применить);Revert (Вернуть исходные значения); Help (Вызов помощи в формате HTML); Close (Закрыть

На вкладке Axes имеются поле Default limits (Диапазоны осей) и флажок Hide tick label (Скрыть обозначение осей).

В поле Default limits устанавливаются верхняя (Yтах) и нижняя (Ymin} границы оси ординат, а также наибольшее отображаемое значение модельного времени на оси абсцисс (Time range).

Относительно оси времени необходимо сделать дополнительное пояснение.

Если величина заданного интервала моделирования не превышает значение Time range (и, следовательно, весь процесс «умещается» в окнеScope), то под графиком в строке Time offset: выводится 0.

Если же интервал моделирования превышает значение Time range. то отображается только отрезок времени, равный Тm - п x(Time range), где Тm- длительность интервала моделирования, п — целое число. При этом в строке Тime offset выводится величина «скрытого» интервала времени (длинойпx(Time range)). Например, если значение Time range равно 7, а длительность интервала моделирования составляет 16 единиц времени, то в окне Scopeбудет выведен график моделируемого процесса за последние 2 единицы времени, а строка под графиком будет иметь вид: Time offset: 14.

Флажок Hide tick label позволяет изменить форму вывода графика в окне Scope. Если он установлен, то оси графика не отображаются, и график занимает всю рабочую область окна.

Чтобы установленные значения параметров вступили в силу, необходимо «нажать» кнопку Apply, расположенную в нижней части окнаProperties.

На вкладке Setting имеются следующие поля:

1. Поле General обеспечивает выбор дискретности измерения отображаемых величин (характеристик системы и модельного времени).

Установка дискретности измерения характеристик системы и времени выполняется раздельно. Выбор производится с помощью выпадающего меню, содержащего два пункта:

Decimation  установка дискретности измерения характеристик системы;

Sample time  установка дискретности измерения модельного времени.

Для ввода требуемых значений используется строка редактирования, расположенная справа от меню. По умолчанию для измеряемых характеристик дискретность равна 1, а для модельного времени — нулю. Это означает, что значение наблюдаемой характеристики измеряется на каждом шаге моделирования, а модельное время считается непрерывным. Если параметр Decimation установить равным, например, 3, то значение исследуемой характеристики будет определяться только 1 раз в течение трех шагов моделирования. Параметр Decimation может принимать только целочисленные значения. Дискретность измерения модельного времени - это фактически величина шага моделирования. По умолчанию она равна 0,02. Для дискретных систем величина шага может быть задана либо в виде положительной константы, либо в форме вычисляемого выражения. Дискретность изменения модельного времени определяет момент окончания вывода данных в окно Scope: если очередной интервал заканчивается за пределами окна, то данные для него не выводятся.

Замечание. Параметр Sample time имеется практически во всех библиотечных блоках SIMULINK. Для каждого блока значение этого параметра устанавливается индивидуально. Если блок реализует некоторую функцию, то параметр Sample time определяет дискретность вычислений. Поэтому для эффектной работы модели необходимо согласовывать установку параметра для взаимосвязанных блоков.

2. Поле Data history позволяет задавать максимальный объем и способ хранения отображаемых в окне данных. Объем сохраняемых данных (Limit rowsto last) вводится в строке редактирования. Способ хранения указывается с помощью флажка Save data to workspace: если он установлен, то отображаемые в окне Scope данные сохраняются в рабочей области MATLAB в виде матрицы, аналогичной по структуре МАТ-файлу. Имя матрицы указывается в строке редактирования (по молчанию — ScopeData).

3. Флажок Floating Scope предназначен для изменения способа использова­ния блока Scope в блок-диаграмме. При установленном флажке Scopeотобра­жается как блок без входа, и если он был связан по входу с другими блоками, то эти связи «обрываются».

Блок XYGraph. Этот блок также относится к «смотровым окнам». Он пред­ставляет собой упрощенный вариант блока Scope и обеспечивает построение гра­фиков зависимостей произвольных величин, фигурирующих в модели. Блок име­ет два входа, первый из которых предназначен для ввода аргумента, второй — для ввода значений функции этого аргумента.

Окно XYGraph откры­вается автоматически при запуске модели. Оно имеет собственное меню, содержа­щее 4 раздела:

• раздел File включает стандартные команды работы с файлами, а также опции вывода графиков на печать;

• раздел Edit содержит единственную доступную команду — Copy Figure, кото­рая позволяет копировать содержимое окна XYGraph в буфер обмена;

• содержание разделов Window и Help совпадает с содержанием одноименных разделов меню командного окна MATLAB.

Блок XYGraph имеет следующие параметры настройки:

- диапазоны осей графика (X-min, Х-тах — для оси абсцисс н Y-min, Y-max  для оси ординат);

• шаг модельного времени (Sample time), по умолчанию его значение равно -1. Это означает, что величина шага совпадает с установленной для модели в целом (либо со значением одноименного параметра предшествующего блока).

Блок Display. Он предназначен для вывода на экран численных значений вели­чин, фигурирующих в модели. Блок имеет 4 параметра настройки.

Первый — Format  задает формат вывода; формат выбирается с помощью выпадающего меню, содержащего 5 пунктов: short, long, short_e,long_e, bank. Пред­лагаемые форматы вывода аналогичны форматам, используемым в командном окне MATLAB. Следующие два параметра используются так же, как и одноименные параметры блока Scope:

Decimation  определяет периодичность вывода значений в окне Display;

Переключатель Floating display позволяет указывать способ использования блока Display в блок-диаграмме;

Поле Sample Time задает величину шага модельного времени, т. е. дискретность вывода данных в окно Display.

Блок Display может использоваться для вывода как скалярных, так и вектор­ных данных. Если отображаемая величина является вектором, то исходный фор­мат блока изменяется автоматически. Об изменении формата говорит маленький черный треугольник, появляющийся в нижнем правом углу блока. Для каждого элемента вектора создается свое мини-окно, но чтобы они стали видимы, необхо­димо «растянуть» изображение блока. Для этого следует выделить блок, подвести курсор мыши к одному из его углов (курсор при этом примет форму двойной стрел­ки), нажать клавишу мыши,и, не отпуская ее, растянуть изображение блока. Если хотя бы один элемент вектора остался «за кадром», на изображении блока Display по-прежнему присутствует черный треугольник. В этом случае операцию «растягивания» блока следует повторить

Блок То File. Как уже было сказано, этот блок используется в паре с блоком From File из раздела Sources. Он обеспечивает запись в МАТ-файл данных, полученных в ходе моделирова­ния. Блок имеет следующие параметры настройки:

File name  имя МАТ-файла, в который будут записываться данные (может быть указан полный путь доступа к файлу, по умолчанию —untitled.mat); имя фай­ла выводится на изображении блока в блок-диаграмме;

Variable name  имя переменной, по которому можно обращаться к данным, записанным в файле (для того. например, чтобы просмотреть или изменить их в командном окне MATLAB); по умолчанию используется стандартное имя ans;

Decimation  дискретность записи данных в файл; при Decimation=1 запись производится на каждом шаге моделирования; параметр может принимать только целочисленные значения;

Sample Time  величина шага моделирования для данного блока.

Блок То Workspace. Он также имеет «пару» из раздела Sources  блок From Workspace и предназначен для сохранения данных, полученных в процессе моделирования, в рабочей области MATLAB. Данные сохраняются в виде мат­рицы, структура которой отличается от структуры данных в МАТ-файле тем, что:

• значения сохраняемых величин расположены по строкам, а не по столбцам:

• не регистрируются значения модельного времени. Блок имеет 4 параметра настройки:

Variable name  имя, под которым данные сохраняются в рабочей области (по умолчанию — Simout);

Maximum number of rows (Максимальное количество строк) — предельно до­пустимое число шагов моделирования, для которого регистрируются данные (по умолчанию задается константой inf, то есть данные регистрируются на всем ин­тервале моделирования);

Decimation  дискретность регистрации данных;

Sample time  величина шага (дискретность изменения) модельного времени.

Два последних параметра имеют тот же смысл, что и одноименные параметры блока То File.

 

Раздел Discrete (Дискретные элементы)                                                        В этот раздел входят блоки, с помощью которых в модели может быть описано поведение дискретных систем. Напомним, что различают два основных типа таких систем: системы с дискретным временем и системы с дискретными состояниями. Блоки, входящие в рассматриваемый раздел библиотеки SIMULINK, обеспечивают моделирование как тех. так я других. Раздел содержит 8 блоков:

1. Unit Delay  блок задержки сигнала.

2. Discrete-Time Integrator — дискретный сумматор (счетчик) времен.

3. Zero-Order Hold  экстраполятор нулевого порядка.

4. First-Order Hold — экстраполятор первого порядка.

5. Discrete State-Space — блок формирования состояния системы. Блоки, обеспечивающие Z-преобразование входного сигнала:

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