Эта конструкция выполняет все списки инструкций. Если в каком-то списке до оператора catch появляется ошибка, то выводится сообщение об ошибке, но системная переменная последней ошибки lasterr не меняется. В выражениях после catch сообщение об ошибке не выводится.
Во всех управляющих структурах список инструкций, или тело, представляет собой последовательность выражений, команд или вложенных управляющих структур, разделяемых пробелом, запятой или точкой с запятой. Точка с запятой запрещает вывод данных на экран.
Для остановки программы используется оператор pause. Он используется в следующих формах:
-
pause – останавливает вычисления до нажатия любой клавиши;
-
pause(N) – останавливает вычисления на N секунд;
-
pause on – включает режим обработки пауз;
-
pause off – выключает режим обработки пауз.
Практические задания
Задание 1. Разработать файл-сценарий для построения графика синусоиды линией красного цвета с выведенной масштабной сеткой в интервале [xmin, xmax].
1. Запустить редактор m-файлов и ввести следующую программу:
%Plot with color red
%Строит график синусоиды линией красного цвета
%с выведенной масштабной сеткой в интервале [xmin, xmax]
x=xmin:0.1:xmax;
plot(x,sin(x),'r')
grid on
2. Сохранить файл под именем «pcr.m».
>> help pcr
Ha экран выведется информация, находящаяся в основном и дополнительном комментариях файла:
Plot with color red
Строит график синусоиды линией красного цвета
с выведенной масштабной сеткой в интервале [xmin, xmax]
>>
4. Затем запустить сценарий на выполнение:
>> pcr
??? Undefined function or variable 'xmin'.
Error in ==> C:\MATLAB6p1\work\pcr.m
On line 4 ==> x=xmin:0.1:xmax;
На экран выводится сообщение об ошибке, так как сценарий использует глобальные переменные, которые не определены. Для успешного выполнения примера необходимо задать следующие действия:
-
Определить переменные xmin и xmax
>> xmin=-10;
>> xmax = 10;
-
Запустить сценарий на выполнение
>> pcr
Задание 2. Разработать файл-функцию для решения предыдущей задачи, выполнив следующие действия:
1. Запустить редактор m-файлов и ввести следующую программу:
%Plot with color red
%Строит график синусоиды линией красного цвета
%с выведенной масштабной сеткой в интервале [xmin, xmax]
function x=fun(xmin,xmax)
x=xmin:0.1:xmax;
plot(x,sin(x),'r')
grid on
2. Сохранить файл под именем «fun.m».
3. Выполнить в командном окне MATLAB следующую команду:
fun(-10,10);
Обратите внимание на то, что xmin и xmax передаются как параметры и объявлять глобальные переменные не требуется.
Задание 3. Разработать файл-сценарий для решения предыдущей задачи с возможностью ввода значений пользователем, выполнив следующие действия:
1.Запустить редактор m-файлов и ввести следующую программу:
%Plot with color red
%Строит график синусоиды линией красного цвета
%с выведенной масштабной сеткой в интервале [xmin, xmax]
disp('введите xmin и xmax ');
xmin=input('xmin = ');
xmax=input('xmax = ');
x=xmin:0.1:xmax;
plot(x,sin(x),'r')
grid on
2.Сохранить файл под именем «pcrdialog.m».
>> pcrdialog
Обратите внимание на то, что xmin и xmax объявляются в теле сценария, поэтому объявлять глобальные переменные не требуется.
Лабораторная работа № 2
Массивы, структуры, ячейки
и классы системы MATLAB
Цель работы: изучение принципов работы с матрицами, структурами, ячейками и классами в MATLAB, а также приобретение навыков их применения для построения моделей нейронных сетей и их исследования.
Теоретические сведения
Векторы, матрицы и многомерные массивы
В системе MATLAB любые данные представляются только в виде массивов: одномерных (векторов), двумерных (матриц) и многомерных любой размерности.
Система MATLAB выполняет сложные и трудоемкие операции над векторами и матрицами даже в режиме прямых вычислений без какого-либо программирования. Поддерживается множество операций над матрицами, таких как:
-
Создание матриц с заданными свойствами: ones, zeros, rand;
-
Конкатенация матриц: cat (dim, А, В), cat (dim, A1, A2, A3, ...);
-
Перестановка элементов: fliplr, flipud, perms;
-
Вычисление произведений и суммирование: prod, cumprod, sum;
-
Поворот: rot 90(A), rot 90(A,k);
-
Выделение треугольных частей матриц: tril (x), tril (x,k), triu ;
-
Вычисление сопровождающей матрицы: compan;
-
Матричные операции векторной алгебры: cand, det, rank, norm;
-
Операции с многомерными массивами: +, -, *, .*, /, ./, ^, .^ .
Интересно отметить, что даже обычные числа и переменные в MATLAB рассматриваются как матрицы размера 1х1, что дает единообразные формы и методы проведения операций над обычными числами и массивами. Данная операция называется векторизацией. Векторизация обеспечивает и упрощение записи операций, и существенное повышение скорости их выполнения. Это также означает, что большинство функций может работать с аргументами в виде векторов и матриц.
Структуры
Массив записей – это новый тип массива, в котором разрешается накапливать в виде записей разнородные данные. Отличительная особенность такого массива – наличие именованных полей.
MATLAB поддерживает следующие функции при работе с массивами записей:
Функция
|
Описание
|
struct
|
Создать массив записей
|
fieldnames
|
Получить имена полей
|
getfield
|
Получить содержимое поля
|
setfield
|
Установить содержимое поля
|
rmfield
|
Удалить поле
|
isfield
|
Истинно, если это поле массива записей
|
isstruct
|
Истинно, если это массив записей
|
Пользователь может расширить состав функций, создавая специальные М-файлы для обработки конкретных данных.
Определение структуры
Структура – это массив записей с именованными полями, предназначенными для хранения данных; причем поле может содержать данные любого типа: векторы, матрицы, массивы и структуры.
Структуру можно построить двумя способами:
а) используя операторы присваивания;
б) используя функцию struct.
Для того чтобы сформировать простейшую структуру размера 1х1, необходимо присвоить данные соответствующим полям. Система MATLAB автоматически формирует структуру по мере ее заполнения.
Функция struct имеет следующий синтаксис:
str_array=struct('<�имя_поля1>’,'<�значение1>','<�имя_поля2>','<�значение2>',...).
Используя индексацию, можно легко определить значение любого поля или элемента структуры. Точно также можно присвоить значение любому полю или элементу поля. Чтобы обратиться к некоторому полю, необходимо ввести точку (.) после имени структуры, за которым должно следовать имя поля.
Непосредственная индексация – это, как правило, наиболее эффективный способ определить или присвоить значение полю записи. Однако если использовалась функция fieldnames и известно имя поля, то можно воспользоваться функциями setfield и getfield.
Функция getfield позволяет определить значение поля или элемента поля:
f = getfield(array, {array_index}, 'field', {field_index})
где аргументы array_index и field_index задают индексы для структуры и поля; они не являются обязательными для структуры размера 1х1. Результат применения функции getfield соответствует элементу следующей структуры
f = array(array_index).field(field_index);
По аналогии функция setfield позволяет присваивать значения полям, используя обращение следующего вида:
f = setfield(array, {array_index}, 'field', {field_index}, value)
Выполнение операций с полями и элементами полей абсолютно аналогично операциям с элементами обычного числового массива. В обоих случаях надо использовать индексные выражения.
Для обработки структур со специфической архитектурой полей могут понадобиться специальные функции обработки полей и их элементов. При написании М-файлов для обработки структур необходимо помнить, что пользователь должен сам выполнить анализ возникновения возможных ошибок, связанных с обработкой полей.
|