
Лаб_практикум_ОВИ_03_06_13
.pdf
одной строке, и пришлось записать ее в две строки, для чего в конце первой строки поставлены три точки.
Замечание 1
Для ввода длинных формул или команд в командную строку следует поставить три точки (подряд, без пробелов), нажать клавишу <Enter> и
продолжить набор формулы на следующей строке. Так можно разместить выражение на нескольких строках. MATLAB вычислит все выражение или выполнит команду после нажатия на <Enter> в последней строке (в
которой нет трех идущих подряд точек).
MATLAB запоминает значения всех переменных, определенных во время сеанса работы. Если после ввода примера, приведенного выше, были проделаны еще какие-либо вычисления, и возникла необходимость вывести значение х, то следует просто набрать х в командной строке и нажать <Enter>:
» x
-0.6611
Переменные, определенные выше, можно использовать и в других формулах. Например, если теперь необходимо вычислить выражение
sin 1,3 ln 3,4
tg 2,75
th 2,75 3 / 2 ,
то достаточно ввести следующую команду:
» (x-y)^(3/2)
ans =
-0.8139 + 0.3547i
21
Вызов функций в MATLAB обладает достаточной гибкостью.
Например, вычислить е3,5 можно, вызвав функцию ехр из командной строки:
» ехр(3.5)
ans =
33.1155
Другой способ состоит в использовании оператора присваивания:
» t = ехр(3.5)
t =
33.1155
Предположим, что часть вычислений с переменными выполнена, а
остальные придется доделать во время следующего сеанса работы с
MATLAB. В этом случае понадобится сохранить переменные,
определенные в рабочей среде.
2.1.2. Сохранение рабочей среды
Самый простой способ сохранить значения всех переменных использовать в меню File пункт Save Workspace As… . При этом появляется диалоговое окно Save… , в котором следует указать каталог и имя файла.
По умолчанию предлагается сохранить файл в подкаталоге work основного каталога MATLAB. Оставьте пока этот каталог. В дальнейшем будет объяснено, как устанавливать пути к каталогам в MATLAB для поиска файлов. Удобно давать файлам имена, содержащие дату работы, например work20-06-12. MATLAB сохранит результаты работы в файле work20-06-12.mat. Теперь можно закрыть MATLAB одним из следующих способов:
22
выбрать в меню File пункт Exit MATLAB;
нажать клавиши <Ctrl>+<Q>;
набрать команду Exit в командной строке и нажать <Enter>;
нажать на кнопку с крестиком в правом верхнем углу окна программы MATLAB.
В следующем сеансе работы для восстановления значений переменных следует открыть файл work20-06-12.mat при помощи пункта
Open меню File. Теперь все переменные, определенные в прошлом сеансе,
стали доступными. Их можно использовать во вновь вводимых командах.
Сохранение и восстановление переменных рабочей среды можно выполнить и из командной строки. Для этого служат команды save и load.
В конце сеанса работы с MATLAB надо выполнить команду
» save work20-06-12
Расширение можно не указывать, MATLAB сохранит переменные рабочей среды в файле work20-06-12.mat. В начале следующего сеанса работы для считывания переменных следует ввести команду
» load work20-06-12
Подробную информацию о командах save и load можно получить,
набрав в командной строке help save или help load.
Замечание 2
Переменные в файлах с расширением mat хранятся в двоичном виде.
Просмотр этих файлов в любом текстовом редакторе не даст никакой информации о переменных и их значениях.
ВMATLAB имеется возможность записывать исполняемые команды
ирезультаты в текстовый файл (вести журнал работы), который потом
23
можно легко прочитать или распечатать из текстового редактора. Для начала ведения журнала служит команда diary. В качестве аргумента команды diary следует задать имя файла, в котором будет храниться журнал работы. Набираемые далее команды и результаты их исполнения будут записываться в этот файл, например, последовательность команд
»diary d20-06-12.txt
»al = 3;
»а2 = 2.5;
»а3 = al + a2
»а3 =
5.5000
»save work20-06-12
»quit
производит следующие действия:
Открывает файл d20-06-12.txt.
Производит вычисления.
Сохраняет переменные в двоичном файле work.20-06-12.mat.
Сохраняет на диске в подкаталоге work корневого каталога
MATLAB журнал работы в файле d20-06-12.txt и закрывает MATLAB.
Посмотрите содержимое файла d20-06-12.txt в каком-нибудь текстовом редакторе, например, в стандартной программе Windows
Блокнот (NotePad). В файле окажется следующий текст:
al = 3;
а2 = 2.5;
а3 = al+a2
а3 =
5.5000
24
save work20-02-06
quit
Запустите снова MATLAB и введите команду load work20-06-12 или откройте файл work20-06-12.mat при помощи меню, как описано выше.
2.1.3. Просмотр переменных
При работе с достаточно большим количеством переменных необходимо знать, какие переменные уже использованы, а какие нет. Для этой цели служит команда who, выводящая в командное окно MATLAB
список используемых переменных:
» who
Your variables are:
al a2 a3
Команда whos позволяет получить более подробную информацию о переменных в виде таблицы:
» |
|
|
|
Name |
Size |
Bytes |
Class |
al |
1 l |
8 |
double |
a2 |
1 l |
8 |
double |
a3 |
l l |
8 |
double |
Grand total is 3 elements using 24 bytes
Первый столбик Name состоит из имен используемых переменных.
То, что содержится в столбике Size, по существу, определяется основным принципом работы MATLAB. Программа MATLAB все данные представляет в виде массивов. Переменные al, a2 и а3 являются двухмерными массивами размера один на один. Каждая из переменных занимает по восемь байтов, как указано в столбике Bytes. Наконец, в
25
последнем столбике Class указан тип переменных double array, т.е.
массив, состоящий из чисел двойной точности. В строке под таблицей написано, что в итоге три элемента, т.е. переменные, занимают двадцать четыре байта. Оказывается, что представление всех данных в MATLAB в
виде массивов дает определенные преимущества.
Для освобождения из памяти всех переменных используется команда clear. Если в аргументах указать список переменных (через пробел), то только они будут освобождены из памяти, например:
»clear al аЗ
»who
Your variables are:
a2
Начиная с версии 6.0, появилось удобное средство для просмотра переменных рабочей среды окно Workspace, для перехода к которому следует активизировать одноименную закладку. Данное окно содержит таблицу, аналогичную той, что выводится командой whos. Двойной щелчок по строке, соответствующей каждой переменной, приводит к отображению ее содержимого в отдельном окне, что особенно полезно при работе с массивами. Панель инструментов окна Workspace позволяет удалить лишние переменные, сохранить и открыть рабочую среду.
2.1.4. Работа с массивами
Очень важно правильно понять, как использовать массивы. Без этого невозможна эффективная работа в MATLAB, в частности построение графиков, решение задач линейной алгебры, обработки данных,
статистики и многих других. В данном подразделе описаны вычисления с векторами.
26
Массив упорядоченная, пронумерованная совокупность
однородных данных. У массива должно быть имя. Массивы различаются по числу размерностей или измерений: одномерные, двухмерные,
многомерные. Доступ к элементам осуществляется при помощи индекса. В
MATLAB нумерация элементов массивов начинается с единицы. Это значит, что индексы должны быть больше или равны единице.
Важно понять, что вектор, вектор-строка или матрица являются математическими объектами, а одномерные, двухмерные или многомерные массивы способы хранения этих объектов в компьютере. Далее будут использоваться слова вектор и матрица, если больший интерес представляет сам объект, чем способ его хранения. Вектор может быть записан в столбик (вектор-столбец) и в строку (вектор-строка). Вектор-
столбцы и вектор-строки часто будут называться просто векторами,
различие будет сделано в тех случаях, если важен способ хранения вектора в MATLAB. Векторы и матрицы обозначаются курсивом, а
соответствующие им массивы прямым моноширинным шрифтом,
например: "вектор а содержится в массиве а", "запишите матрицу R в
массив R".
Ввод, сложение и вычитание векторов
Работу с массивами начнем с простого примера вычисления суммы
векторов:
1,3 |
|
|
|
7,1 |
|
|
|
|
|
|
|
|
|
a |
5,4 |
|
, |
b |
3,5 |
. |
|
6,9 |
|
|
|
8,2 |
|
|
|
|
|
|
Для хранения векторов используйте массивы а и b. Введите массив а в командной строке, используя квадратные скобки и разделяя элементы вектора точкой с запятой:
27
» a = [1.3; 5.4; 6.9]
a =
1.3000
5.4000
6.9000
Поскольку введенное выражение не завершено точкой с запятой, то пакет MATLAB автоматически вывел значение переменной а. Введите теперь второй вектор
» b = [7.1; 3.5; 8.2];
Для нахождения суммы векторов используется знак +. Вычислите сумму, запишите результат в массив с и выведите его элементы в командное окно:
» с = а + b
с =
8.4000
8.9000
15.1000
Узнайте размерность и размер массива а при помощи встроенных функций ndims и size:
» ndims(a)
ans =
2
» size(a)
ans = 3 1
28
Итак, вектор а хранится в двухмерном массиве а с размерностью три на один (вектор-столбец из трех строк и одного столбца). Аналогичные операции можно проделать и для массивов b и c. Поскольку числа в пакете
MATLAB представляются в виде двухмерного массива один на один, то при сложении векторов используется тот же знак плюс, что и для сложения чисел.
Ввод вектор-строки осуществляется в квадратных скобках, однако элементы следует разделять пробелами или запятыми. Операции сложения, вычитания и вычисление элементарных функций от вектор-
строк производятся так же, как и с вектор-столбцами, в результате получаются вектор-строки того же размера, что и исходные. Например:
» s1 = [3 4 9 2] s1 =
3 4 9 2
» s2 = [5 3 3 2] s1 =
5 3 3 2
» s3 = s1 + s2 s3 =
8 7 12 4
Замечание 3
Если размеры векторов, к которым применяется сложение или вычитание, не совпадают, то выдается сообщение об ошибке.
Естественно, для нахождения разности векторов следует применять знак минус, с умножением – сложнее.
29
Введите две вектор-строки:
»v1 = [2 -3 4 1];
»v2 = [7 5 -6 9];
Операция .* (не вставляйте пробел между точкой и звездочкой!)
приводит к поэлементному умножению векторов одинаковой длины. В
результате получается вектор с элементами, равными произведению соответствующих элементов исходных векторов:
» u = v1.*v2 u =
14 -15 -24 9
При помощи .^ осуществляется поэлементное возведение в степень:
» р = v1.^2 p =
4 9 16 1
Показателем степени может быть вектор той же длины, что и возводимый в степень. При этом каждый элемент первого вектора возводится в степень, равную соответствующему элементу второго вектора:
» p = vl.^v2
Р =
128.0000 -243.0000 0.0002 1.0000
30