Пакет MatLab. Элементы программирования. Функции пакета. Графические возможности пакета, страница 8

переменная s = ’Управление системой’

Функция eval используется для применения текстовой строки как оператора или выражения. Например программа для загрузки десяти пронумерованных последовательно файлов данных имеет вид:

fname='mydate';

for i=1:10

eval(['load',fname,int2str(i)]

end

Текстовое макросредство особенно удобно для передачи имени функции в m-файлы-функции и определения новых команд и операций (см. Приложение).

§6. Файлы-функции.

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

function y=func345(x)

%Пример - расчет среднего значения элементов вектора

%Входной параметр - вектор, выходной - среднее значение

[m,n]=size(x);

if m==1 m=n;

end

y=sum(x)/m;

Теперь можно использовать эту функции, как и другие (стандартные) функции пакета (функция пользователя должна находится в рабочем каталоге). Если z=1:99, то набрав func345(z), получим ans=50.

Первые несколько строк, начинающиеся % могут быть просмотрены командой help. Команда help func345 выводит на командный экран  две строки:

%Пример - расчет среднего значения элементов вектора

%Входной параметр - вектор, выходной - среднее значение

§7. Управление вычислениями.

Для управления вычислениями в пакете MatLab используются операторы цикла и оператор условий.

               Цикл for.

Цикл for повторяет группу операторов фиксированное количество раз, например:

for i=1:n, x(i)=0, end, если n<1, то конструкция допустима, но команда выполнена не будет. Если x уже не существует или имеет меньше n элементов, то дополнительное пространство будет выделено автоматически.

Циклы могут быть вложенными (для каждого for обязательно должен быть свой оператор end):

for i=1:m

for j=1:n

A(i,j)=1/(i+j-1);

end

end

A

Точка с запятой, заканчивающая внутреннюю команду A(i,j)=..., блокирует повторный вывод на дисплей значений элементов матрицы A в цикле.

Цикл for может действовать в обратном направлении:

t=[-1 0 1 3 5];

A(:,n)=ones(n,1);

for j=n-1:-1:1

A(:,j)=t.*A(:,j+1);

end

Шаг цикла может быть не целочисленным

for i=1.1:0.25:7.4

% Тело цикла

end

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

i=0;

for t=0:.001:1;

i=i+1;

y(i)=sin(t)

end

выполняется значительно медленнее, чем программа, представленная ниже:

t=0:0.001:1;

y=sin(t);

               Цикл while.

Данная конструкция дает возможность повторять группу операторов нефиксированное число раз под контролем логического условия. В качестве примера представлена программа поиска наименьшего числа n, факториал которого n! является 100-значным числом:

n=1;

while prod(1:n)<1.e100, n=n+1; end

n

               Операторы if и break.

Оператор if определяет условия выполнения вычислений. Общий вид данного оператора имеет вид:

if <условие> <операторы>

end

if      <условие> <операторы>

elseif <условие> <операторы>

else   <условие> <операторы>

end

Параметр <условие> может принимать одно из следующих значений:

<            меньше;

<=          меньше или равно;

>            больше;

>=          больше или равно;

==          равно;

~=          не равно.

Например:

if n<0

A=-n;

elsif n==0

A=1;

else

A=n

end

Оператор break дает возможность, при необходимости, выйти из цикла.

k=1;

for i=0:100

c=k*i^2; if c>100 break

end

end

§8. Другие операторы системы

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

Оператор input. Служит для ввода значений переменной с клавиатуры. Формат: переменная = input('сообщение')

Например:

V = input(‘ Введите скорость объекта  ’)

Оператор disp. Используется для вывода сообщений в командное окно. Например:

disp('Расстояние S = ')

Оператор % - начало комментария.

Оператор pause - прерывание программы до нажатия любой клавиши.

Pause     -

pause(3) - приостанов на 3 секунды.