Новости

Основы работы с MATLAB. Изучение простейших операций и приемов работы в среде пакета MATLAB

Работа добавлена:






Основы работы с MATLAB. Изучение простейших операций и приемов работы в среде пакета MATLAB на http://mirrorref.ru

Лабораторная работа №1. Основы работы сMATLAB. ИЗУЧЕНИЕ ПРОСТЕЙШИХ операций и приемов работы в среде пакетаMATLAB

1.1 Цель работы:

Ознакомление с простейшими операциями и приемами работы в среде пакетаMATLAB.

1.2 Оpганизация самостоятельной работы

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

Предисловие

MATLAB - система многоцелевого назначения, которая вышла на рынок программных продуктов почти двадцать лет назад и с тех пор непрерывно совершенствовалась. Но первоначально ее основу составляли алгоритмы решения систем линейных уравнений и задач на собственные значения, откуда и произошло ее название «матричная лаборатория». Теперь она представляется наиболее эффективной при проведении прикидочных расчетов и при разработке новых алгоритмов. Сейчас уже существует несколько десятков специальных приложений кMATLAB'у, посвященных более узким проблемам. Это обработка сигналов и изображений, инженерное программирование в виде блок-схем, решение экономических задач и многое другое. Но любое из этих приложений можно изучать только после первоначального освоенияMATLAB'а.

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

Основы работыс MATLAB

СредаMATLAB включает интерпретатор команд на языке высокого уровня, графическую систему, пакеты расширений и реализована на языке C. Вся работа организуется через командное окно(CommandWindow),которое появляется при запуске программыmatlab.exe. В процессе работы данные располагаются в памяти(Workspace),для изображения кривых, поверхностей и других графиков создаются графические окна.

В командном окне в режиме диалога проводятся вычисления. Пользователь вводит команды или запускает на выполнение файлы с текстами на языкеMATLAB. Интерпретатор обрабатывает введенное и выдает результаты: числовые и строковые данные, предупреждения и сообщения об ошибках.Строка вводапомечена знаком >>. В командном окне показываются вводимые с клавиатуры числа, переменные, а также результаты вычислений. Имена переменных должны начинаться с буквы. Знак = соответствует операции присваивания. Нажатие клавишиEnterзаставляет систему вычислить выражение и показать результат. Наберите с клавиатуры в строке ввода:

» a=2+51-37

Нажмите клавишуEnter,на экране взоне просмотрапоявится результат вычисления:

а = 16

Все значения переменных, вычисленные в течение текущего сеанса работы, сохраняются в специально зарезервированной области памяти компьютера, называемойрабочим пространством системыMATLAB(Workspace).Командойclcможно стереть содержимое командного окна, однако это не затронет содержимого рабочего пространства. Когда исчезает необходимость в хранении ряда переменных в текущем сеансе работы, их можно стереть из памяти компьютера командойclearилиclear(имя1, имя2,...). Первая команда удаляет из памяти все переменные, а вторая - переменные с именамиимя1иимя2.Командойwhoможно вывести список всех переменных, входящих в данный момент в рабочее пространство системы. Для просмотра значения любой переменной из текущего рабочего пространства системы достаточно набрать ее имя и нажать клавишуEnter.

После окончания сеанса работы с системойMATLAB все ранее вычисленные переменные теряются. Чтобы сохранить в файле на диске компьютера содержимое рабочего пространства системыMATLAB, нужно выполнить команду менюFile I Save Workspace As ....По умолчанию расширение имени файлаmat,поэтому такие файлы принято называть МАТ-файлами.Для загрузки в память компьютера ранее сохраненного на диске рабочего пространства нужно выполнить команду меню:

File I Load Workspace ....

Вещественные числа и тип данныхdouble

СистемаMATLAB представляет на машинном уровне все действительные числа заданные мантиссой и показателем степени, например, 2.85093Е+11, где буквой Е обозначается основание степени равное 10. Этот основной тип данных носит названиеdouble.MATLAB по умолчанию использует форматshortдля вывода вещественных чисел, при котором показываются только четыре десятичных цифры после запятой.

Введите с клавиатуры пример:

» res=5.345*2.868/3.14-99.455+1.274

Получите результат вычисления:

res = -93.2990

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

» format long

и далее наберите имя переменной

» res

нажмите клавишуEnterи получите более подробную информацию:

res = -93.29900636942675

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

» format short

Целые числа показываются системой в командном окне в виде целых чисел.

Над вещественными числами и переменными типаdoubleпроизводятся арифметические операции: сложения +, вычитания -, умножения *, деления / и возведения в степень. Приоритет в выполнении арифметических операций обычный. Операции одинакового приоритета выполняются в порядке слева направо, но круглые скобки могут изменить этот порядок.

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

В системеMATLAB присутствуют все основные элементарные функции для вычислений с вещественными числами. Любая функция характеризуется своим именем, списком входных аргументов (перечисляются через запятую и стоят внутри круглых скобок, следующих за именем функции) и вычисляемым (возвращаемым) значением. Список всех имеющихся в системе элементарных математических функций может быть получен по командеhelpelfun.В Приложении 1 перечислены стандартные функции вещественного аргумента.

Вычислите выражение, включающее вычисление функции арксинус:

» 2*asin(1)

Убедитесь, что получился следующий результат:

ans = 3.1416,

соответствующее числу «пи». В системеMATLAB для вычисления числа «пи» есть специальное обозначение:pi.(Список системных переменныхMATLAB находится в Приложении 2).

MATLAB имеет также логические функции, функции, связанные с целочисленной арифметикой (округления до ближайшего целого:round,усечение дробной части числа:fix).Есть еще функцияmod -остаток от деления с учетом знака,sign -знак числа,lcm -наименьшее общее кратное,perms -вычисление числа перестановок иnchoosek -числа сочетаний и много других. Многие из функций имеют область определения, отличную от множества всех действительных чисел.

Помимо арифметических операций над операндами типаdoubleвыполняются еще операции отношения и логические операции. Операции отношения сравнивают между собой два операнда по величине. Эти операции записываются следующими знаками или комбинациями знаков (Таблица 1):

Символьные обозначения операций отношения

Таблица 1

<

<=

>

>=

~=

==

Меньше

Меньше или равно

Больше

Больше или равно

Не равно

Равно

В случае истинности операции отношения ее величина равна 1, а в случае ложности - 0. Операции отношения имеют более низкий приоритет, чем арифметические операции.

Наберите с клавиатуры выражение с операциями отношения и вычислите его:

» a=1; b=2; c=3;

» res=(a<b)+(c~=b)+(b==a)

Вы получите следующий результат:res = 2

Логические операции над вещественными числами обозначаются знаками, перечисленными в таблице 2:

Символьные обозначения логических операций

Таблица 2

&

|

~

и

или

НЕ

Первые две из этих операций являются бинарными (двухоперандными), а последняя - унарной (однооперандной). Логические операции трактуют свои операнды как «истинные» (не равные нулю) или «ложные» (равные нулю). Если оба операнда операции «И» истинны (не равны нулю), то результат этой операции равен 1 («истина»); во всех остальных случаях операция «И» вырабатывает значение 0 («ложь»). Операция «ИЛИ» вырабатывает 0 («ложь») только в случае, когда являются ложными (равными нулю) оба операнда. Операция «НЕ» инвертирует «ложь» на «истину». Логические операции имеют самый низкий приоритет.

Комплексные числа и комплексные функции

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

» 2+3i; -6.789+0.834e-2*i; 4-2j; x+y*i;

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

» res=sin(2+3i)*atan(4i)/(1-6i)

Получится результат:

-1.8009 - 1.9190i

Специально для работы с комплексными числами предназначены следующие функции:abs(абсолютное значение комплексного числа),conj(комплексно сопряженное число),imag(мнимая часть комплексного числа),real(действительная часть комплексного числа),angle(аргумент комплексного числа),isreal(«истина», если число действительное). Функции комплексного переменного перечислены в Приложении 1.

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

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

» c=2+3i; d=2i;

» c>d

Логические операции трактуют операнды как ложные, если они равны нулю. Если же у комплексного операнда не равна нулю хотя бы одна его часть (вещественная или мнимая), то такой операнд трактуется как истинный.

Числовые массивы

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

» al=[1 2 3]; d=[1+2i,2+3i,3-7i];

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

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

»al(3)=789;

мы изменим третий элемент массива. Или, после введения:

»al(2)= (al(1)+al(3))/2;

второй элемент массива станет равным среднему арифметическому первого и третьего элементов. Запись несуществующего элемента вполне допустима -она означает добавление нового элемента к уже существующему массиву:

» al(4)=7;

Применяя после выполнения этой операции к массивуа1функциюlength,находим, что количество элементов в массиве возросло до четырех:

» length(al)

ans = 4

Тоже самое действие - «удлинение массиваа1»- можно выполнить и с помощью операции конкатенации:

» al=[al 7];

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

» al(1)=67; al(2)=7.8; al(3)=0.017;

Однако этот способ создания не является эффективным.

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

» diap=3.7:0.3:8.974;

Если не нужно выводить на экран весь получившийся массив, то в конце набора (после конечного числа диапазона) следует набрать точку с запятой. Чтобы узнать, сколько элементов в массиве, следует вызвать функциюlength (имя массива).

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

Введите с клавиатуры:

» a=[1 2; 3 4; 5 6]

НажмитеENTER,получим:

а =

1 2

3 4

5 6

Полученную матрицуаразмером 3x2 (первым указывается число строк, вторым - число столбцов) можно сформировать также вертикальной конкатенацией вектор-строк:

» a=[[1 2];[3 4];[5 6]];

или горизонтальной конкатенацией вектор-столбцов:

» a=[[1;3;5],[2;4;6]];

Структуру созданных массивов можно узнать с помощью командыwhos(имя массива),размерность массива - функциейndims,а размер массива -size.

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

» a(1,1)=1; a(1,2)=2; a(2,1)=3;

» a(2,2)=4; a(3,1)=5; a(3,2)=6;

Однако будет намного эффективнее, если до начала прописывания элементов массива, создать массив нужного размера функциямиones (m,n)илиzeros(m,n),заполненный единицами или нулями (m - число строк, n - число столбцов). При вызове этих функций предварительно выделяется память под заданный размер массива, после этого постепенное прописывание элементов нужными значениями не требует перестройки структуры памяти, отведенной под массив. Использование этих функций возможно и при задании массивов других размерностей.

Если после формирования массиваХпотребуется, не изменяя элементов массива, изменить его размеры, можно воспользоваться функциейreshape (Х, М,N),гдеM иN -новые размеры массива Х

Объяснить работу этой функции можно, только исходя из способа, каким системаMATLAB хранит элементы массивов в памяти компьютера. Она хранит их в непрерывной области памяти упорядоченно по столбцам: сначала располагаются элементы первого столбца, вслед за ними расположены элементы второго столбца и т.д. Помимо собственно данных (элементов массива) в памяти компьютера хранится также управляющая информация: тип массива (например,double),размерность и размер массива, другая служебная информация. Этой информации достаточно для определения границ столбцов. Отсюда следует, что для переформирования матрицы функциейreshapeдостаточно изменить только служебную информацию и не трогать собственные данные.

Поменять местами строки матрицы с ее столбцам можно операцией транспортирования, которая обозначается знаком .' (точка и апостроф). Например,

» A=[1 1 1; 2 2 2; 3 3 3];

» B=A'

В =

1 2 3

1 2 3

1 2 3

Операция ' (апостроф) выполняет транспонирование для вещественных матриц и транспонирование с одновременным комплексным сопряжением для комплексных матриц.

Объекты, с которыми работаетMATLAB,являются массивами!!! Даже одно заданное число во внутреннем представленииMATLAB является массивом,состоящим из одного элемента.MATLAB позволяет делать вычисления с огромными массивами чисел также легко как и с одиночными числами, и это является одним из самых заметных и важных преимуществ системыMATLAB над другими программными пакетами, ориентированными на вычисления и программирование. Помимо памяти, необходимой для хранения числовых элементов (по 8 байт на каждый в случае вещественных чисел и по 16 байт в случае комплексных чисел),MATLAB автоматически при создании массивов выделяет еще и память для управляющей информации.

Вычисления с массивами

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

Операции сложения и вычитания матриц (знакомые вам из линейной алгебры) обозначаются стандартными знаками + и -.

Задайте матрицыА и В ивыполните операцию сложения матриц:

» A=[1 1 1; 2 2 2; 3 3 3]; B=[0 0 0; 7 7 7; 1 2 3];

» A+B

Если используются операнды разных размеров, выдается сообщение об ошибке, за исключением случая, когда один из операндов является скаляром. При выполнении операцииА + скаляр (А -матрица) система расширитскалярдо массива размера А, который и складывается далее поэлементнос А.

» A+5

ans = 6 6 6

7 7  7

8 8 8

Для поэлементного перемножения и поэлементного деления массивов одинаковых размеров, а также поэлементного возведения в степень массивов, применяются операции, обозначаемые комбинациями двух символов: .* , ./, и .. Использование комбинаций символов объясняется тем, что символами * и / обозначены специальные операции линейной алгебры над векторами и матрицами.

Кроме операции ./, называемой операцией правого поэлементного деления,

есть еще операция левого поэлементного деления .\. Объясним разницу между

этими операциями. Выражение А ./ В приводит к матрице с элементами А(k, m) /В (k, m), авыражение А.\ В приводит к матрице с элементамиВ (k, m) /А (k, m).

Знак * закреплен за перемножением матриц и векторов всмысле линейной алгебры.

Знак \ закреплен в системеMATLAB за решением довольно сложной задачи линейной алгебры - нахождением корней системы линейных уравнений. Например, если требуется решить систему линейных уравнений

Ау = b,

гдеА -заданная квадратная матрица размераNxN