w = [ ];
while length(v) > 0,
w = [w; v(1)]; I = find(abs(v - v(I)) < 1e-6); v(l) =[];I=[]; end
Для того чтобы прочитать комментарий к функции, следует воспользоваться командой helр<имя М-файла>.
Пример:
Отклик системы на команду help rmovel.
%RMOVEL удаляет из вектора v совпадающие элементы.
%Вызов функции:
%w = rmovel(v)
%Используемые функции:
%MATLAB: length, find
%ППП SNAE: нет
%Входные переменные:
%v - исходный вектор.
%Выходные переменные:
%w - вектор, не содержащий одинаковых элементов.
eval |
Интерпретация текстовых срок |
|
|
Синтаксис:
eval (' < выражение>')
х = eval('< выражение>')
Функция eval(t) означает, что текст, содержащийся в символьной переменной t = ‘< выражение>‘, будет восприниматься как команда, оператор или часть выражения.
х = eval(t) присваивает результат вычислений переменной х.
Пример:
Следующий фрагмент программы показывает, каким образом с помощью команды load можно загрузить 10 последовательно пронумерованных файлов с именами mydata.i:
fname = 'mydata'; for 1=1:10
eval(['load ', fname.int2str(i)]) end
Здесь int2str - функция для преобразования числового значения в строковое, записанная в файле int2str.m.
Пример:
Образовать последовательность магических матриц размера от 1 до 12 с
именами Ml, M2, ..., М12. for n= 1:12
eval(['M'num2str(n)'=magic(n)']) end
feval Вычисление функции
Синтаксис: feval('<имя_фyнкцuu>', х1, ..., хn)
[у 1,.... yk] = feval('<имя_функции>‘, х1, ..., хn)
Функция feval('<имя_фyнкцuu>', х1, ..., хn) передает аргументы (х1, ....
хn) вызываемой функции.
Функция [у 1,.... yk] = feval('<имя_функции>‘, х1, ..., хn) возвращает множество выходных переменных (у1, ..., yk).
Обычно функция feval применяется для вычисления функций, которые являются внешними, а их значение требуется перевычислять на каждом шаге в теле другой процедуры, например при интегрировании систем ОДУ или минимизации функции.
Пример:
Интегрирование дифференциального уравнения Ван дер Поля. Функция вычисления правой части уравнения Ван дер Поля оформляется в виде внешней функции вида
function xdot = vdpol(t, x)
xdot=[x(1) . * (1 - x(2) .^ 2) - x(2); x(1)]
Для интегрирования системы ОДУ методом Рунге - Кутта предназначена функция ode23, в теле которой присутствуют следующие операторы, которые используют функцию vdpol, передаваемую в качестве входного аргумента tpfun процедуры ode23:
s1 = feval(ypfun, t, у); s1 = s1(:);
s2 = feval(ypfun, t + h, у + h * s1); s2 = s2(:);
s3 = feval(ypfun, t + h/2, у + h * (s1+s2)/4); s3 = s3(:):
Тогда для интегрирования уравнения Ван дер Поля требуется следующий вызов функции ode23:
t0 = 0; tf = 20; % Задание интервала времени интегрирования хО = [0 0.25]'; % Задание начальных условий
[t, x] = ode23('vdpol', t0, tf, хО);
global |
Определение глобальных переменных |
|
|
Синтаксис:
global имя1 имя 2...
Функция global имя1 имя2 имяЗ определяет переменные с именами имя1, имя2, имяЗ как глобальные.
При использовании глобальных переменных следует соблюдать осторожность, поскольку их значения могут измениться при выполнении некоторой М-функции.
Как правило, каждая М-функция использует локальные переменные, которые изолированы от переменных других функций и переменных М- сценария. Однако если несколько функций и головная программа объявляют некоторую переменную глобальной, то в этом случае все модули используют одну и ту же переменную, которая должна иметь опцию global.
Обычно для имен локальных переменных используют длинные названия и заглавные буквы.
nargin, nargout Определение количества аргументов функции
Синтаксис: n = nargin n = nargout
Функции nargin и nargout позволяют определить количество входных и выходных переменных функции в процессе ее выполнения.
Пример:
В приведенном фрагменте процедуры fplot показано, как можно учесть необязательные входные и выходные переменные:
function [хО, уО] = fplot(fnamre, lims, npts, angi, subdiv)
%FPLOT Построение графика функции
%FPLOT(fnamre, lims, npts, angi, subdiv)
%Первые два аргумента являются обязательными;
%остальные - необязательные.
%FPLOT(...) строит график;
%[х, у] = FPLOT(...) возвращает массивы значений аргумента и функции if nargin < 5, subdiv = 20; end
if nargin < 4, angi = 10; end if nargin < 3, npts = 25; end if nargout = 0
plot(x, y) else
x0 = x;
y0 = y; end
input |
Ввод информации пользователя |
|
|
Синтаксис:
x = input(‗<приглашение>‘)
x = input(‗<приглашение>‘, ‗s‘)
x = input(‗<приглашение>‘) выводит на экран строку с приглашением и ожидает ввода выражения, допустимого в MATLAB (арифметическое выражение или имя встроенной функции). Если функция имеет несколько входных параметров, то выходной переменной x присваивается только первое значение.
x = input(‗<приглашение>‘, ‗s‘)
возвращает строку, которая введена пользователем.
pause |
Приостановка выполнения М-файла |
|
|
Синтаксис: pause pause(n)
Функция pause приводит к паузе в работе системы и ожиданию нажатия любой клавиши для продолжения.
pause(n) приостанавливает работу системы на n секунд.
2. SIMULINK - ИНСТРУМЕНТ ВИЗУАЛЬНОГО МОДЕЛИРОВАНИЯ
2. 1. Общая характеристика. Демонстрация возможностей
Разработка моделей средствами SIMULINK (в дальнейшем S-моделей) основана на использовании технологии Drag-and-Drop (Перетащи и Оставь). В качестве «кирпичиков» для построения S-модели используются модули (или блоки), хранящиеся в библиотеке SIMULINK.
SIMULINK хорош тем, что, с одной стороны, обеспечивает пользователю доступ ко всем основным возможностям пакета MATLAB, а с другой
является достаточно самостоятельной его компонентой, в том смысле, что при работе с ним не обязательно иметь навыки в использовании других инструментов, входящих в состав пакета.
Блоки, включаемые в создаваемую модель, могут быть связаны друг с другом, как по информации, так и по управлению. Тип связи зависит от типа блока и логики работы модели. Данные, которыми обмениваются блоки, могут быть скалярными величинами, векторами или матрицами произвольной размерности.
Любая S-модель может иметь иерархическую структуру, то есть состоять из моделей более низкого уровня, причем число уровней иерархии практически не ограничено.
Наряду с другими параметрами моделирования пользователь может задавать способ изменения модельного времени (с постоянным или переменным шагом), а также условия окончания моделирования.
В ходе моделирования имеется возможность наблюдать за процессами, происходящими в системе. Для этого используются специальные «смотровые окна», входящие в состав библиотеки SIMULINK. Интересующие пользователя характеристики системы могут быть представлены как в числовой, так и в графической форме. Кроме того, существует возможность включения в состав модели средств анимации.
Еще одно важное достоинство SIM ULINK заключается в том, что он является открытой системой: состав библиотеки может быть пополнен пользователем за счет разработки собственных блоков.
Запуск SIMULINK можно произвести либо нажав соответствующую кнопку на панели меню командного окна, либо выбрав команду New Model в разделе File главного меню.
При запуске SIMULINK открываются два окна:
пустое окно untitled (заготовка для создания новой S-модели);
окно Library: simulink, содержащее перечень основных разделов библиотеки SIMULINK.
Оба окна имеют сходную структуру и содержат строку меню, панель инструментов, строки состояния (только MATLAB 5. 2) и рабочее поле.
Меню содержит следующие разделы: File — команды работы с mdl-файлами,
Edit — команды редактирования блок-диаграммы и опции для работы с библиотекой,
View — команды изменения формата окна (показать/убрать панель инструментов и строку состояния);
Simulation — команды управления моделированием,
Format — команды редактирования формата (т. е. внешнего облика) блоков диаграммы и блок-диаграммы в целом.
На панель инструментов выведены следующие команды меню
(рис. 2. 1):