Строит график синусоиды линией красного цвета

с выведенной масштабной сеткой в интервале [xmin, xmax]

>>

4. Затем запустить сценарий на выполнение:

>> pcr

??? Undefined function or variable 'xmin'.

Error in ==> C:\MATLAB6p1\work\pcr.m

On line 4 ==> x=xmin:0.1:xmax;

На экран выводится сообщение об ошибке, так как сценарий использует глобальные переменные, которые не определены. Для успешного выполнения примера необходимо задать следующие действия:

5. Определить переменные xmin и xmax

>> xmin=-10;

>> xmax = 10;

6. Запустить сценарий на выполнение

>> 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».

3.Выполнить в командном окне MATLAB следующие команды:

>> pcrdialog

Обратите внимание на то, что xmin и xmax объявляются в теле сценария, поэтому объявлять глобальные переменные не требуется.

Лабораторная работа № 2

Массивы, структуры, ячейки
и классы системы MATLAB

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

Теоретические сведения

Векторы, матрицы и многомерные массивы

В системе MATLAB любые данные представляются только в виде массивов: одномерных (векторов), двумерных (матриц) и многомерных любой размерности.

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

1. Создание матриц с заданными свойствами: ones, zeros, rand;

2. Конкатенация матриц: cat (dim, А, В), cat (dim, A1, A2, A3, ...);

3. Перестановка элементов: fliplr, flipud, perms;

4. Вычисление произведений и суммирование: prod, cumprod, sum;

5. Поворот: rot 90(A), rot 90(A,k);

6. Выделение треугольных частей матриц: tril (x), tril (x,k), triu ;

7. Вычисление сопровождающей матрицы: compan;

8. Матричные операции векторной алгебры: cand, det, rank, norm;

9. Операции с многомерными массивами: +, -, *, .*, /, ./, ^, .^ .

Интересно отметить, что даже обычные числа и переменные в 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)

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

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

Массивы ячеек

В систему MATLAB включен специальный тип массивов ячеек, элементы которого сами, в свою очередь, являются массивами. Имеются следующие функции для работы с массивами ячеек:

Функция Описание
cell Создать массив ячеек
celldisp Показать содержимое массива ячеек
cellplot Показать графическую структуру массива ячеек
num2cell Преобразовать числовой массив в массив ячеек
deal Обмен данными между любыми классами массивов
cell2struct Преобразовать массив ячеек в структуру
struct2cell Преобразовать структуру в массив ячеек
iscell Истинно, если это массив ячеек

Пользователь может расширить состав этих функций, создавая специальные М-файлы для обработки конкретных данных.

Определение массива ячеек

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

Создать массивы ячеек можно двумя способами:

а) используя операторы присваивания;

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

Можно построить массив ячеек, присваивая данные отдельным ячейкам. В этом случае система MATLAB автоматически строит массив по мере ввода данных. Существует два способа присвоения данных отдельным ячейкам.

Индексация ячеек

В этом случае необходимо заключить индексы ячейки в круглые скобки, используя стандартные обозначения для массива. Заключить содержимое ячейки в правой части оператора присваивания в фигурные скобки { }.

Индексация содержимого

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

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

а) доступ к содержимому ячейки с помощью индексации содержимого;

б) доступ к подмножеству ячеек с помощью индексации ячеек.

Наши рекомендации