Реферат: Учебное пособие для студентов и аспирантов естественнонаучных факультетов
КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Факультет вычислительной математики и кибернетики
Научно-технические расчеты
в системе 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
еще рефераты
Еще работы по разное
Реферат по разное
Морозов А. В. М71 История психологии: Учебное пособие для вузов
17 Сентября 2013
Реферат по разное
Методические указания по проведению анализа риска опасных промышленных
17 Сентября 2013
Реферат по разное
Методические указания по подготовке к государственному экзамену по специальности «маркетинг» для студентов экономического факультета
17 Сентября 2013
Реферат по разное
Список новых поступлений литературы в библиотеку Ургупс
17 Сентября 2013