Реферат: Учебное пособие для студентов и аспирантов естественнонаучных факультетов



КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ


Факультет вычислительной математики и кибернетики


Научно-технические расчеты

в системе MATLAB


Учебное пособие
для студентов и аспирантов естественнонаучных

факультетов





КАЗАНЬ – 2007


УДК 5519.6

ББК 32.81


3-15


Бахтиева Л.У.

Научно-технические расчеты в системе MATLAB. Учебное пособие для студентов и аспирантов естественнонаучных факультетов. – Казань, Изд-во КГУ, 2007, 44 стр.


Рецензент: Столов Е.Л.


Предлагаемое пособие содержит краткое описание основных возможностей системы MATLAB. Приведены примеры использования системы и задания для практических занятий.


 Казанский государственный университет, 2007.
СОДЕРЖАНИЕ


Введение. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

Часть 1. Основные сведения о системе MATLAB.


Режим прямых вычислений . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . 5

Операции с рабочей областью. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 5

Переменные и функции системы MATLAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

Формирование векторов и матриц. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

Создание и отладка программных файлов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

Работа с файлами, импорт и экспорт данных. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

Средства создания баз данных. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

Графика, анимация. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

Графический интерфейс польз ователя (GUI). .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16

Сообщения об ошибках, справочная система MATLAB. . . . . . . . . . . . . . . . . . . . . . . .18

Интерфейс системы MATLAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19


Часть 2. Обзор расширений MATLAB


Пакеты математических вычислений. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20

Пакеты для обработки сигналов и изображений. . . . . . . . . . . . . . . . . . . . . . . . . . . . ... 21

Пакеты анализа и синтеза систем управления. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ..22

Некоторые другие пакеты. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... ..24


Часть 3. Примеры расчетов, задания для практических занятий


Тема 1. Работа в режиме прямых вычислений. . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . 25

Тема 2. Программирование, работа с файлами. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

Тема 3. Вычисление корней полинома и нулей функции. . . . . . . . . . . . . . . . . . . . . . . . . .27

Тема 4. Работа с матрицами, системы линейных алгебраических уравнений. . . . . . . .29

Тема 5. Численное дифференцирование и интегрирование. . . . . . . . . . . . . . . . . . . . . . . .30

Тема 6. Численное решение дифференциальных уравнений. . . . . . . . . . . . . . . . . . . .. . . 31

Тема 7. Использование прикладных пакетов. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33

Тема 8. Структуры. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34

Тема 9. Графика. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35

Тема 10. Графический интерфейс пользователя (GUI). . . . . . . . . . . . . . . . . . . . . . . . .. . . .38


Приложение. Список основных функций........................................................................ . . . .. 40


Литература.................................................................................................................................. 43


Введение.


MATLAB (Matrix Laboratory – матричная лаборатория) – мощное средство автоматизации математических расчетов, отличающееся, прежде всего, широким применением матричных операций. Одна из основных задач системы MATLAB – предоставление языка программирования, ориентированного на технические и математические расчеты, способного превзойти возможности традиционных языков программирования как по скорости вычислений, так и по адаптации к решению самых разнообразных задач.

Немаловажно, что с системой MATLAB могут интегрироваться такие популярные системы как Mathcad, Maple и Mathematica. Средство последних версий Matlab Notebook позволяет готовить документы в текстовом процессоре Word со вставками в виде результатов вычислений MATLAB, представленных в численном, табличном или графическом виде, что позволяет создавать «живые» электронные книги.

Таким образом, система MATLAB может стать отличным помощником в научных исследованиях. Однако, широкому применению системы препятствует недостаток необходимой литературы, изданной на русском языке. Документация по системе и ее приложениям содержит многостраничную информацию, разобраться в которой довольно сложно.

Цель настоящего пособия - облегчить знакомство с возможностями системы и особенностями их реализации. При подготовке пособия использованы материалы монографий и учебников, опубликованных в последние годы [1] - [4].


^ Часть 1. Основные сведения о системе MATLAB.


Режим прямых вычислений.



Систему MATLAB можно использовать, прежде всего, как мощный калькулятор, способный производить, помимо обычных вычислений, операции с векторами и матрицами, комплексными числами, рядами и полиномами. Можно выводить графики различных функций – от простой синусоиды до сложной трехмерной фигуры.
Работа в режиме прямых вычислений (командном режиме) носит диалоговый характер. Пользователь набирает выражение, редактирует его и после нажатия клавиши ENTER получает ответ. Например, команда

>> v= [1 3 4];

задает трехэлементный вектор v (возможна также запись не через пробел, а через запятую v=[1,3,4]). Знак ; (точка с запятой) в конце выражения блокирует немедленный вывод результата вычислений. Далее можно подать команду

>> sin(v)

и получить ответ

ans= 0.8415 0.1411 -0.7568

Как видим, система вычисляет функцию sin от векторного аргумента, при этом встроенные функции (см. Приложение) записываются строчными буквами, их аргументы указываются в круглых скобках. Если пользователем не указана переменная для значения результата, то MATLAB назначает переменную с именем ans.

Выражения записываются в соответствии с правилами языка MATLAB (п.3). Если выражение оказывается длинным, то его часть можно перенести на новую строку с помощью знака ... (многоточие). Текстовые комментарии вводятся с помощью знака % перед текстом строки.

Полезно усвоить команды управления окном сессии:

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

С помощью клавиш  и  можно вернуться к выполнению любой из предыдущих команд.


^ Операции с рабочей областью.


Переменные и определения новых функций хранятся в рабочей области, которая при длительной работе в командном режиме перестает быть непрерывной и засоряется. Команда save позволяет сохранять значения переменных в бинарных файлах с расширением .mat. Команда может быть записана в одной из форм:

save fname – все переменные записываются в файл с именем fname.mat

save fname X – переменная X записывается в файл с именем fname.mat

save fname X Y Z – переменные X,Y,Z записываются в файл с именем fname.mat

После параметров команды могут быть указаны ключи, уточняющие формат записи:

mat (двоичный по умолчанию), ascii (8 цифр), ascii-double (16 цифр), append (добавление в уже существующий файл).

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

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

diary file_name – записывает весь текст сессии в файл с расширением .txt, diary off – приостанавливает запись, diary on – вновь начинает запись, type file_name – позволяет просмотреть записанный текстовый файл.


3. Переменные и функции системы MATLAB.


Простейший объект языка MATLAB – число. Примеры представления чисел: 15, -4, 3.205, 12.35e-24 (пробелы между символами в записи числа не допускаются!), 2+3.00i (мнимая часть комплексного числа имеет множитель i или j). Все операции над числами производятся в формате с двойной точностью. Выдача результата производится в нормализованной форме с четырьмя цифрами после десятичной точки и одной до нее. Для смены формата вывода чисел служит команда

>> format name

где name: 1) short (5 знаков), 2) short e (5 знаков мантиссы и 3 знака порядка), 3) long (15 знаков), 4) long e (15 и 3), 5) hex (в 16-тиричном формате), 6) bank (для денежных единиц).

Система обладает большим набором встроенных функций (математических и др.), позволяющих производить над числами, помимо обычных арифметических операций, самые разнообразные действия. Так, например, функции real(z), imag(z), abs(z), angle(z) возвращают соответственно действительную и мнимую части комплексного числа, его модуль и аргумент.

В MATLAB имеются системные константы, которые могут переопределяться, например: i или j (мнимая единица), pi (число ), eps (2-52), realmin ((2-1022), realmax (21023), inf (), ans, NaN (Not-a-Number – нечисловой характер данных или неопределенность), computer.

Еще один объект языка - символьная константа, т.е. цепочка символов, заключенных в апострофы, например: ‘MATLAB – наш помощник’.

Переменные в MATLAB могут иметь имя, состоящее из любого количества символов (идентифицируются первые 31), имя должно начинаться с буквы, но может содержать цифры и символ подчеркивания. Строчные и прописные буквы различаются! Значения переменных хранятся в рабочей области, для очистки которой используется команда clear в разных формах: clear X (стирается одна переменная X), clear a b c (несколько переменных), clear all (все переменные). Команда who перечисляет все переменные, хранящиеся в рабочей области на данный момент. Более подробную информацию выдает команда whos.

Все переменные в MATLAB рассматриваются как матрицы, вектора или массивы. Тип переменной явно не указывается. Размер самых простых переменных (чисел) 1х1, они допускают основные арифметические действия +, -, *, / с числовой переменной, такие действия выполняются поэлементно. Для матриц и векторов поэлементные операции (они обозначаются добавлением знака . (точка) перед соответствующей операцией, например, .* и ./) возможны лишь для операндов с одинаковыми размерами, например:

>> v1=[3 6 9 12];

>> v2=[1,2,3,4];

>> v1/v2

ans=3

>> v1.*v2

ans=3 12 27 48

>> v1./v2

ans=3 3 3 3

Операция обычного умножения (без знака .) выполняется по правилам линейной алгебры. Используются также операции \ и .\ (левое матричное деление ), ^ и .^ (возведение в степень и поэлементное возведение в степень).

Специфическая операция : (двоеточие) применяется для формирования упорядоченных последовательностей (начальное значение : шаг : конечное значение, по умолчанию шаг=1), например:

>> 2:7

ans =

2 3 4 5 6 7

Операция : широко используется при работе со средствами построения графиков, а также при формировании матриц и векторов. Выражения с операцией : могут использоваться в качестве аргументов функций, например:

>> %построение графика функции cos, аргумент меняется от 0 до 5 с шагом 0.2

>> plot(cos(0:0.2:5))

>> % вычисление функции Бесселя порядка от 0 до 5 с аргументом 0.5

>> bessel (0:5,1/2)

ans =

0.9385 0.2423 0.0306 0.0026 0.0002 0.0000

Помимо арифметических, в языке MATLAB существуют операции отношения (= =, ~=, <, >, <= , >=), логические операции (&, and, or, not, ~, xor, any, all), а также операции = (присваиваивание), .’ (простое транспонирование), ’ (комплексно-сопряженное транс-понирование), [,] (горизонтальное соединение), [;] (вертикальное соединение).

MATLAB содержит большой набор (более тысячи) встроенных функций, элементарных и специальных, от одного или нескольких аргументов. Наиболее значимые функции перечислены в Приложении (для краткости приведены лишь названия фунций без указания аргументов). Более подробную информацию о конкретной функции можно получить, подав команду: help имя функции. Представление о полном наборе операторов, конструкций языка и системных функций можно получить с помощью команды: help имя, где имя – название соответствующей подпапки в папке MATLAB/TOOLBOX/MATLAB, а именно:

general – команды общего назначения;

ops - операторы и специальные символы;

lang – конструкции языка;

strfun – строковые функции;

iofun – функции ввода-вывода;

timefun – функции времени и дат;

datatypes – типы и структуры данных;

elmat – операции с элементарными матрицами;

elfun – элементарные математические функции;

specfun – специальные математические функции;

matfun – матричные функции линейной алгебры;

datafun – анализ данных и преобразования Фурье;

polyfun – полиномиальные функции и функции интерполяции;

funfun – функции функций и функции решения ОДУ;

soarfun – функции разреженных матриц;

graph2d – команды двумерной графики;

graph3d – команды трехмерной графики;

specgraph – команды специальной графики;

graphics – команды дескрипторной графики;

uitools – графика пользовательского интерфейса.

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

>> f=inline(’1+sin(x)^2’);

>> y=f(pi/2)

y=2

Ту же задачу можно решить с помощью оператора eval(s), который вычисляет значение выражения, заданного в виде символьной переменной s:

>> x=pi/2;

>> y=eval(‘1+sin(x)^2’)

y=2

Функцию можно задать также в виде m-файла (см. п. 5) или с помощью оператора @ (так называемая дескрипторная или handle-функция).

^ Формирование векторов и матриц.


Если надо задать вектор из n элементов, то их значения следует перечислить в квадратных скобках через пробел или через запятую, например:

>> B=[2 –3 4 6];

При задании матрицы используется символ ; (точка с запятой) для разграничения строк:

>> A=[1 3; 0 –.3];

Можно вводить элементы векторов и матриц в виде арифметических выражений, содержащих доступные системе функции. Элементы матриц могут быть комплексными. Для указания отдельного элемента используется выражение вида B(k) или A(m,n), например:

>> A(1,2)

ans=3

Выражение A(k) дает доступ к элементам матрицы, развернутым в один столбец:

>> A(4)

ans=-0.3

Индекс k может быть логическим выражением:

>> A(A>0)

ans= 1 3

В качестве индекса может быть вектор. Например, запись A([1,2],2) обозначает первый и второй элементы второго столбца. Для указания на m-ю строку или n-й столбец матрицы используются выражения вида A(m,:) или A(:,n). Запись A(k:m;n) обозначает вектор-столбец, сформированный из нескольких элементов n-го столбца матрицы A (с k по m-й).

Имеется ряд функций для задания особых векторов и матриц, например magic(n) (матрица размером nхn, у которой сумма строк, сумма столбцов и сумма диагоналей одинаковы), hadamard(n) (матрица Адамара), hilb(n) (матрица Гильберта), zeros(m,...,q) (многомерный массив из нулей), ones(m,...,q) (массив из единиц), rand(m,...,q) (массив из случайных чисел), eye(n) (единичная матрица), rempat(A,m,n) (m*n дублей матрицы A, m вниз, n вправо), linespace(a,b,n) (вектор-строка из n чисел, равномерно расположенных на отрезке [a,b], по умолчанию n=100), logspace(a,b,n) (узлы логарифмической сетки по десятичному логарифму, по умолчанию n=50) и др.

Элементами матрицы могут быть вектора и матрицы, что позволяет формировать большие матрицы, объединяя малые. Для удаления строк или столбцов удобно использовать пустые квадратные скобки [ ]:

>> A(1,:)=[ ]

A= 0 –0.3

Основную информацию о векторах и матрицах можно получить с помощью функций size(A) (вектор-строка с размерами матрицы A), length(B) (число компонентов вектора B), ndims(X) (размерность массива Х), disp(X) (массив Х без его имени), isempty(X) (=1, если X=[]), isequal(X,Y) (=1, если X=Y), isnumeric(X) (=1, если Х – числовая переменная), islogical(X) (=1, если Х – логическая переменная).

При формировании матриц можно использовать следующие функции:

reshape(X,m,n,) – формирует матрицу m*n из элементов массива Х;

diag(A,k) – формирует вектор-столбец из k-й диагонали А, по умолчанию – из главной;

tril(A) – формирует нижнюю треугольную матрицу для А;

triu(A) – формирует верхнюю треугольную матрицу для А;

fliplr(А) – меняет на обратный порядок столбцов;

flipud(А) – меняет на обратный порядок строк;

rot90(А,k) – поворачивает А на 90 градусов k раз;

find – определяет индексы ненулевых элементов;

end – на месте индекса задает его последнее значение.

Определитель квадратной матрицы вычисляется с помощью функции det(A). Для вычисления обратной матрицы методом Гаусса-Жордана используется функция inv(A).


^ Создание и отладка программных файлов.


Программами в системе MATLAB являются m-файлы текстового формата, содержащие запись программ в виде программных кодов. Основными средствами программирования являются:

данные различных типов,

операторы,

функции пользователя,

управляющие структуры,

системные операторы и функции,

средства расширения языка.

В MATLAB определены следующие основные типы данных: single, double, char, logical, sparse, cell, struct, function_handle, Java classes и др. Кроме того, предусмотрен тип данных UserObject (тип данных, определяемый пользователем). Каждому типу данных можно соотнести характерные для него операции.

Язык программирования системы MATLAB ориентирован на структурное программирование, в нем нет номеров строк и оператора безусловного перехода GO TO. Имеются управляющие структуры следующих типов:

условный оператор if...elseif...else...end, простейший вариант: if условие инструкции end;

цикл типа for...end, конструкция цикла имеет вид: for var=b:s:f , инструкции, end, где b – начальное значение переменной цикла var, s – шаг (по умолчанию s=1), f – конечное значение переменной var;

цикл типа while...end, конструкция цикла имеет вид: while условие инструкции end, досрочный выход из цикла может быть реализован с помощью операторов break и continue;

переключатель switch...case...otherwise...end;

конструкция try...catch...end.

Имеются также функции диалогового ввода и вывода:

r=input (‘String’) или input (‘String’,’s’);

disp(X).

Функция pause (или pause(N)) позволяет приостановить выполнение программы, N – количество секунд. Функции tic и toc позволяют включить и выключить таймер.

Программы вызываются по имени, под которым записаны в виде файла с расширением .m. Имя программы начинается с латинской буквы и состоит из таких букв и цифр. При первом обращении программа ищется на диске. Рекомендуется записать программу в текущую директорию. Поиск m-файла по ключевому слову осуществляется командой lookfor. Путь к программе можно указать командой path.

Программы бывают двух видов: сценарии (scripts) и функции (functions). Программа-скрипт представляет собой набор команд без входных и выходных параметров. Она может использовать все переменные рабочей области, а не только те, что создаются в ней. Собственные переменные скрипта располагаются в рабочей области без защиты от внешнего доступа, что позволяет передать управление из скрипта в командную строку с помощью команды keyboard (без параметров), при этом работа в командной строке заканчивается командой return. Таким образом, скрипт удобен для работы в интерактивном режиме, но требует повышенного внимания при использовании в нем своих переменных.

Пример программы-скрипта (определение локальных максимумов вещественного вектора):

m=length(x); % вычисление длины вектора x

v=2:m-1; % формирование вектора индексов

i=find(x(v-1)x(v+1))+1; % поиск индексов локальных максимумов

y=x(i); % значения локальных максимумов

После набора программы ее следует сохранить, например, под именем lokmax.m. Теперь возможен ее вызов из командной строки:

>> x=[1,2,-3,3,-2,4]; lokmax, [y;i]

y =2 3

i =2 4

Комментарий, включенный в программу, выводится командой:

>> help имя файла

Первая строка программы-функции имеет вид: function [y1,y2,...yj]=ff(x1,x2,...xi), где ff – имя функции, x1,x2,...xi – входные формальные параметры, y1,y2,...yj – выходные формальные параметры. Обращение к функции записывается так: [v1,v2,...vj]=ff(u1,u2,...ui), где u1,u2,...ui,v1,v2,...vj – фактические параметры. Входных аргументов у функции может и не быть. Все переменные программы-функции имеют локальный характер и недоступны для их использования извне. Если при создании файла-функции желательно применение глобальных переменных, то следует подать команду: global var1 var2... . Таким образом, программа-функция неудобна для использования в интерактивном режиме, но любая ее переменная может быть открыта для использования в командной строке.

Пример программы-функции (та же задача):

function [y,i]=lokmax(x)

m=length(x);

v=2:m-1;

i=find(x(v-1)x(v+1))+1;

y=x(i);

После сохранения функции к ней можно обратиться из командной строки:

>> x=[1,2,-3,3,-2,4]; [y,i]= lokmax(x)

и получить тот же ответ.

Файлы-функции могут вызываться так же из других m-файлов. Начиная с версии 5.0 появилась возможность включать в тело основной функции подфункции. Они имеют идентичную конструкцию.

При создании программ-функций часто бывают полезны две функции:

nargin – возвращает число входных параметров данной функции;

nargout - возвращает число выходных параметров данной функции;

Иногда в программе-функции бывает необходимо выдать сообщение об ошибке, для этого служит команда error (‘сообщение’).

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

>> type имя файла (или для вывода листинга с пронумерованными строками dbtype)

Для установки в тестируемый m-файл точек прерывания используются команды:

>> dbstop in M-file at lineno – установить точку прерывания в заданной строке;

>> dbstop in M-file at subfun – установить точку прерывания в подфункции;

>> dbstop if error – установить точку прерывания при сообщении об ошибке.

Команда dbstatus (без параметров) выводит список установленных в данной сессии точек прерывания. Для удаления точек прерывания используется команда dbclear с тем же синтаксисом, что и dbstop, например

>> dbclear M-file at lineno.

Для пошагового выполнения программы используется команда dbstep (или dbstep nlines для выполнения заданного числа строк).

Для редактирования и отладки m-файлов в MATLAB существует специальный многооконный редактор, выполненный как типичное приложение Windows. Он позволяет нумеровать строки, устанавливать контрольные точки, вычислять переменные по месту нахождения, получать справку и прочее (вход в редактор осуществляется из главного меню: (File – M-file).


^ Работа с файлами.


Открыть файл в системе MATLAB можно с помощью специального Мастера импорта

Import Wizard (Import Data в меню File). Возможности Мастера достаточно очевидны, они зависят от того, какие данные импортируются. Можно также использовать обычные файловые операции чтения и записи файлов в тех или иных форматах. Операции импорта и экспорта файлов открывают обширные возможности по обмену данными между системой MATLAB и другими программами. Вот некоторые из них:

open имя – открывает файл в зависимости от анализа параметра имя и его расширения;

fid=fopen(filename,permission)-открывает указанный файл под управлением permission (этот параметр принимает значение ‘r’, если файл открывается для чтения, ‘w’ – для записи, ‘a’ – для присоединения), при открытии текстового файла к содержимом permission добавляется t (например, ‘rt’ или ‘wt’), fid содержит идентификатор файла;

status=fclose(fid) – закрывает файл с указанным идентификатором, status=0, если операция прошла успешно и –1 при ошибке;

[A,count]=fread(fid,size,precision) – читает двоичные данные из файла с указанным идентификатором и записывает их в матрицу A, параметр count содержит число успешно прочитанных элементов (не обязателен), если параметр size не задан, то читается весь файл;

count=fwrite(fid,A,precision) – записывает двоичные данные из матрицы A в файл;

fscanf - читает форматируемые данные из файла;

fprintf(fid,format,A,...) – записывает форматируемые данные в файл, fid=1 для стандартного вывода (экран по умолчанию), fid=2 для стандартной ошибки, format - строка, одержащая спецификаторы %, *, \, символы преобразования f, d, i, o,u, x и пр. (см. Language Reference Guide), оператор подобен одноименному оператору языка С;

r=input (‘запрос’) - вводит выражение с клавиатуры, результат заносится в r;

imread - читает образ из графического файла;

imwrite – записывает образ в графический файл;

iminfo – возвращает информацию о графическом файле;

auread (или wavread)– считывает заданный аудиофайл;

auwrite (или wavwrite)- записывает заданную инфомацию в виде аудиофайла;

matlabroot– возвращает имя директории, в которой установлено программное обеспечение MATLAB.

Для позиционирования файлов можно использовать следующие команды:

frewind(fid)- устанавливает начальное значение указателя положения в файле с указанным идентификатором;

ftell(fid) – возвращает значение указателя положения;

fseek(fid,offset,origin) – устанавливает положение указателя на байт с заданным смещением offset относительно положения origin (=-1 для начала файла, =0 для текущей позиции указателя, =1 для конца файла);

feof(fid) – указывает, является ли считываемый символ признаком конца файла;

ferror(fid) – возвращает сообщение об ошибке в файле.

Для записи файлов на диск и считывания файлов с диска служат команды load и save, используемые в очевидных формах. В этих командах имя файла указывается по правилам, принятым в операционных системах класса MS-DOS.

Для запуска Мастера импорта можно использовать также команды:

uiimport (fname) – открывает файл и запускает Мастер импорта;

uiimport (‘-file’) – вначале выводит диалог выбора файла;

uisave – управляемое пользователем сохранение;

Команда delete(‘имя файла’) удаляет файл из текущей папки.



^ Средства создания баз данных.


Одним из типов данных, используемых системой MATLAB, являются структуры. Каждая структура состоит из ряда полей, имеющих имена. Поля могут содержать данные любого типа - от пустого поля [ ] до массивов. MATLAB поддерживает и массивы структур, что позволяет создавать мощные базы данных.

Для задания структуры используется оператор присваивания, например:

>> man.name=’Петр’;

>> man.fam=’Иванов’;

>> man.dr=1976;

>> man.mr=’Казань’;

Чтобы создать массив структур, надо ввести индексацию имени структуры, например:

>> man(1).fam=’Иванов’;

>> man(3).dr=1972;

Количество структур в массиве можно определить с помощью функции length(имя):

>> length(man)

ans=3

Для просмотра структуры или отдельного поля следует указать соответствующее имя:

>> man(3).dr

ans=1972

Структуру можно создать также с помощью функции struct(‘field1’,value1,...), например:

>> A=struct(‘gorod’,’Казань’,’ulica’,’Московская’,’dom’,12,’kvart’,52)

A=

gorod: ‘Казань’

ulica: ‘Московская’

dom: 12

kvart: 52

С помощью функции deal возможно множественное присваивание входных данных:

>> [A,B,C,...]=deal(X,Y,Z,...).

Проверка имен полей и структур осуществляется с помощью функций isfield(S,’field’) и isstruct(S).

Для работы с полями структуры можно использовать функции:

>> fieldname(S) – возвращает имена полей заданной структуры

>> getfield(S,’field’) – возвращает содержимое заданного поля

>> setfield(S,’field’,V) – присваивает заданному полю значение переменной V

>> rmfield(S,’field’) – удаляет заданное поле.

Наиболее сложный тип данных в системе MATLAB – массив ячеек. Это массив, элементами которого являются ячейки, содержащие любые типы массивов, включая массивы ячеек. Содержимое ячеек задается в фигурных скобках {}.

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

>> cell(N) - создание массива ячеек из NхN пустых матриц

>> cell(size(A)) - создание массива ячеек из пустых матриц того же размера, что A.

Для отображения массива ячеек C служит команда celldisp(C).

Для более наглядного графического представления можно использовать команду:

>> cellplot(C,’legend’).

Для создания строкового массива ячеек может использоваться функция cellstr(S), например:

>> S={‘Я’’живу’’в Казани’}

>> C=cellstr(S)

C=‘Я’ ’живу’ ’в Казани’.


^ 8. Графика, анимация.


Система MATLAB обладает большими возможностями для графической визуализации вычислений – от построения простых графиков функций до трехмерных комбинированных и презентационных графиков с элементами анимации, а также средствами проектирования графического интерфейса (GUI).

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

figure(i) – делает активным i–е окно при i<=k (если открыто k окон) или открывает окно с номером i при i>k

clf – очищает текущее графическое окно (по умолчанию окно очищается при построении

очередного графика)

hold on – запрещает очистку окна до подачи команды hold off

zoom on – включает режим лупы (zoom(N) изменяет масштаб в N раз)

whitebg – открывает графическое окно, меняя цвет фона на противоположный

subplot(m,n,p) – разбивает окно на m*n подокон, p – номер текущего подокна.

Выдачу содержимого графического окна на печать можно осуществить с помощью опции Print в меню File. Копирование содержимого текущего графического окна осуществляется опцией Copy Figure в меню Edit.

Для построения графика функции одной переменной в декартовых координатах служит команда

plot(X,Y) – строит график функции Y(X), где Y и X – вектора одинаковой длины.

Если X и Y – матрицы, то строится семейство графиков по данным, содержащимся в колонках матриц. Команда plot(Y) строит график Y(i), где i –индекс элемента в векторе Y, команда plot(X,Y,S) позволяет задать тип и цвет линии графика с помощью строковой константы S (Y - желтый, M – фиолетовый, C - голубой, R - красный, G - зеленый, B - синий, W - белый, K – черный, - сплошная линия, -. штрихпунктир, : двойной пунктир, _ штриховая линия, . линия строится точками, * звездочками, + плюсами, O окружностями, S квадратами, X крестами, V треугольниками вниз, ^ треугольниками вверх, D ромбами, < треугольниками влево, > треугольниками вправо, P пятиугольниками, H шести-угольниками). Для построения нескольких линий на одном графике возможна подача команды plot(X1,Y1,S1,X2,Y2,S2,...), например:

>> x=-2*pi:0.1*pi:2*pi;

>> y1=cos(x);

>> y2=cos(x).^2;

>> y3=cos(x).^3;

>> plot(x,y1,’-Y’,x,y2,’-.+R’,x,y3,’_OK’)

Команда plot(Y,X) позволяет построить график обратной функции, а plot(X(t),Y(t)) – график функции, заданной параметрически.

^ Разметкой осей и линиями сетки можно управлять с помощью команд:

axis off – убирает с осей их обозначения и маркеры

axis on – восстанавливает введенные ранее обозначения

axis([xmin xmax ymin ymax]) – устанавливает диапазон координат по осям

axis auto – устанавливает параметры осей по умолчанию

axis equal - устанавливает параметры осей с одинаковым расстоянием между метками

axis manual – «замораживает» масштаб осей в текущем состоянии

grid on – добавляет сетку к текущему графику

grid off – отключает сетку.

Для текстовых сообщений на графике служат команды:

title(‘string’) – титульная надпись

xlabel(‘string’) или ylabel(‘string’) – названия осей

text(X,Y,’string’) – текст, начало которого находится в точке (X,Y)

gtext(‘string’) – позиционирование текста с помощью мышки


legend(string1,string2,...,pos) – легенда, размещенная в зависимости от параметра pos (0 – лучшее место, 1 – верхний правый угол, 2 – верхний левый угол, 3 – нижний левый угол, 4 – нижний правый угол, -1 – справа от графика).

Для построения графиков в полярной системе координат служит команда polar(theta,ro) или polar(theta,ro,S) с синтаксисом, аналогичным plot, например:

>> x=1:.01:2;

>> nx=length(x);

>> ro=x.^3;

>> fi=linespace(0,3*pi,nx);

>> polar(fi,ro)

Команды loglog(...), semilogx(...) и semilogy(...) позволяют построить графики функций в логарифмическом и полулогарифмическом масштабах.

Для построения диаграмм служат команды:

bar(Y) – столбцовый график элементов вектора Y (или bar(X,Y), где положение столбцов задается вектором X, или bar(X,Y,width,S) с заданной шириной столбцов, параметр S аналогичен рассмотренному ранее параметру для команды plot);

hist(...) – гистограмма, параметры те же, что у команды bar;

stairs(...) – лестничный график, параметры те же, что у команды bar;

rose(theta,N) – угловая гистограмма, N – число интервалов от 0 до 2*pi (по умолчанию 20).

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

например:

meshgrid(X,Y) –задание опорной области для построения трехмерной поверхности (команда meshgrid(X,X) эквивалентна команде meshgrid(X));

plot3(X,Y,Z) – трехмерный аналог команды plot, где X, Y, Z – матрицы одинакового размера (возможен вариант с дополнительным параметром S или plot3(X1,Y1,Z1,...)), команда строит трехмерные точки и соединяет их отрезками прямых.

Пример:

% параболоид, изображенный методом сеток

>> [X,Y]=meshgrid([-2:.1:2]);

>> Z=X.^2+Y.^2;

>> plot3(X,Y,Z,’-r’,Y,X,Z,’-r’)

Более наглядное изображение обеспечивают команды:

mesh(X,Y,Z,C) – сетчатое изображение поверхности (C – цвет узловых точек, по умолчанию C=Z, т.е. цвет линий зависит от их высоты);

meshc(...) - изображение поверхности и ее проекции в виде линий равного уровня;

meshz(...) – построение поверхности столбцами;

surf(X,Y,Z,C) – цветная параметрическая поверхность, цвет задается массивом С;

surfc(...) – построение поверхности и ее проекции;

surfl(...) – построение поверхности с подсветкой от источника света, возможен параметр S – вектор координат источника (S=[Sx,Sy,Sz] в декартовых координатах и S=[AZ,EL] в сферических координатах), можно также задать цвет подсветки дополнительным параметром ‘light’.

Окраску поверхности и различные эффекты можно задать с помощью функций:

colormap(S) – задает окраску тонами указанного цвета, например colormap(‘gray’);

shading interp – устраняет изображение сетки и задает интерполяцию для оттенков цвета;

colorbar – выдает на экран шкалу оттенков с соответствующими координатами;

diffuse – задает эффект диффузионного рассеяния;

lighting – управляет подсветкой;

material – имитирует свойства рассеивания света различными материалами;

specular – задает эффект зеркального отражения;

view – задает положение точки просмотра;

rotate3d – задает поворот трехмерной фигуры.

Существуют специальные команды для построения цилиндра и сферы, а также для построения объемных фигур с помощью плоских треугольников:

[X,Y,Z]=cylinder(R,N) – создает массивы для дальнейшего построения с помощью функции surf цилиндрической поверхности с радиусом R и числом узловых точек N;

[X,Y,Z]=sphere(N) – генерирует матрицы размера (N+1)*(N+1) для последующего построения с помощью команды surf;

trimesh(TRI,X,Y,Z,C) – строит объемную каркасную фигуру с треугольниками, заданными матрицей поверхности TRI, каждая строка которой содержит три элемента и определяет треугольную грань путем указания индексов, по которым выбираются координаты из векторов X,Y,Z;

trisurf(...) – аналогична предыдущей команде, но строит закрашенные треугольники.

MATLAB обладает большим набором функций, обеспечивающих анимацию, например:

comet(X,Y) – отображает движение точки по заданной векторами X,Y траектории;

comet3(X,Y,Z) – движение трехмерной точки;

capture – захват с экрана текущего графического окна;

getframe – формирование вектор-столбца, определяющего один кадр для анимации;

m=moviein(N) – формирование матрицы, рассчитанной на N анимационных кадров;

movie(m) – отображение кадров, содержащихся в матрице m;

rotate – вращение фигуры вокруг заданной точки в заданном направлении;

frame2im – преобразование кадра в графический образ;

im2frame – преобразование графического образа в кадр.

Центральным понятием дескрипторной (handle) графики, на которой базируются графические средства MATLAB, является графический объект. Используются следующие типы объектов: root (первичный – экран компьютера), figure (объект создания графического окна), uicontrol (создание пользовательского интерфейса), a
еще рефераты
Еще работы по разное