2764
.pdfсохранить такие типы данных, как массивы записей, ячеек, многомерные массивы или объекты, нельзя.
Когда содержимое рабочей области сохраняется в ASCIl-формате, то рекомендуется единовременно сохранять только одну переменную. Если сохраняется более одной переменной, то система MATLAB создаст файл ASCII-файл, который нельзя будет в дальнейшем загрузить в MATLAB.
Загрузка рабочей области. Команда load позволяет загрузить МАТфайл, который был ранее сохранен с помощью команды save. При загрузке МАТ-файла новые значения одноименных переменных замещают старые.
Если МАТ-файл имеет расширение, отличающееся от -mat, то необходимо использовать флаг -mat; в противном случае MATLAB будет считать форматом файла ASCII-формат.
Загрузка файлов данных в ASCIl-формате. Команда load позволяет выполнять импорт файлов данных в ASCIl-формате; она преобразовывает содержимое файла в переменную с именем файла, только без расширения.
Например, применение команды load tides.dat создает в рабочей области системы MATLAB переменную с именем tides. Если исходный файл в ASCIIформате имеет m строк с n значениями в каждой строке, то результатом будет массив чисел размера m n.
clear |
Освобождение области памяти |
Синтаксис:
clear удаляет все переменные из рабочей области;
clear Х удаляет переменную или функцию с именем Х из рабочей области. Если Х глобальная переменная, то команда удаляет переменную Х из текущей рабочей области, но оставляет ее доступной для любой функции, где эта переменная объявлена глобальной;
clear function удаляет из рабочей области все используемые М-функции;
clear all удаляет переменные, функции и группы МЕХ-файлов; clear global удаляет все глобальные переменные.
раск |
Дефрагментация рабочей области памяти |
|
|
Команда pack выполняет сборку ―мусора‖, то есть сохраняет все переменные на диске, очищает память и затем вновь загружает переменные с диска. Необходимость использования этой команды возникает при продолжительной работе в системе, когда в результате фрагментации памяти затрудняется работа с переменными большой длины.
clc |
Очистка командного окна |
|
|
Команда clc очищает командное окно и возвращает курсор в левый верхний угол экрана.
1.3. Импорт и экспорт данных
Существует много приемов для перемещения данных между системой MATLAB и другими приложениями. В большинстве случаев при работе с данными системы MATLAB можно просто использовать команды чтения и записи файлов. Для более сложных наборов данных можно создать собственные программы на языке С.
Импортирование данных в систему MATLAB. Существует несколько способов для передачи данных из других приложений в систему MATLAB. Выбор способа зависит от объема и формата данных.
Ввод данных в виде списка. Если количество данных невелико, то их можно просто напечатал», помещая в квадратные скобки. Этот метод неудобен при большом количестве данных, поскольку их невозможно редактировать. Формирование данных в М-файле. Используя текстовый редактор, можно сформировать М-файл, в котором данные представлены как список элементов. По существу, это тот же первый способ, но он имеет то преимущество, что позволяет с помощью редактора корректировать данные. Достаточно после исправления перезапустить М-файл, чтобы ввести исправленные данные.
Загрузка данных из ASCII-файла. ASCII-файлы накапливают данные в 7-разрядном коде без контроля по четности. Каждая строка содержит одинаковое количество значений, разделенных пробелами, и завершается символом возврата каретки. Эти файлы можно редактировать, используя обычный текстовый редактор. Их можно читать непосредственно в системе MATLAB, используя функцию load. При этом создается переменная, имя которой совпадает с именем файла. Можно воспользоваться функций dimread, чтобы указать другой тип разделителя.
Чтение данных с использованием функций ввода/вывода.
Применение функций ввода/вывода, а также функций fopen и fread, полезно при загрузке файлов данных из других приложений, использующих специальные форматы данных.
Использование специальных средств для чтения файлов. Для чтения файлов, записанных в специальных форматах, и системе MATLAB имеются следующие специализированные функции:
Функция |
Назначение |
|
|
|
|
dimread |
Чтение ASCII-файлов |
whiread |
Чтение электронных таблиц в формате WK1 |
imread |
Чтение изображения из графического файла |
wavread |
Чтение звукового файла с расширением .wav |
Экспортирование данных из системы MАТLАВ. Существует несколько способов для передачи данных из системы MATLAB в другие приложения.
Использование команды diary. При работе с массивами небольших размеров можно применять команду diary, чтобы создать файл дневника, который включает команды MATLAB, используемые в течение сеанса работы, а также позволяет просмотреть на экране необходимые данные. Записи дневника могут быть полезны для вложения в документы или отчеты. В дальнейшем можно применять текстовый редактор для редактирования дневника.
Сохранение данных в формате ASCII. Команда save с опцией -ascii
позволяет записать данные в этом формате, причем, используя команду dimwrite, можно задать другой тип разделителя.
Использование специальных средств для записи файлов. Для записи файлов в специальных форматах, определяемых приложениями, в системе MATLAB имеются следующие специализированные функции:
Функция |
Назначение |
|
|
|
|
dimwrile |
Запись данных в ASCII-файл |
wk1write |
Запись данных в электронную таблицу а формате WK1 |
imwrite |
Запись изображения в графический файл |
auwrite |
Запись данных в звуковой файл с расширением .au (формат фирмы |
|
SUN Microsystems) |
wavwrite |
Запись данных в звуковой файл с расширением .wav (формат фирмы |
|
Microsoft) |
1.4. Операторы, константы, служебные переменные
Язык MATLAB – это язык операторов. Операторы, вводимые пользователем в командной строке, исполняются системой MATLAB в режиме интерпретации. Операторы имеют две формы записи:
с явным присваиванием: переменная = выражение;
с неявным присваиванием: выражение.
Операторы состоят из специальных символов, имен функций и
переменных, а также числовых констант и могут оканчиваться запятой или точкой с запятой, которые управляют выводом результата на экран.
Для изменения стандартного порядка выполнения операций используются круглые скобки (квадратные скобки используются для задания элементов массива переменных).
Результат вычисления выражения присваивается заданной переменной в левой части от знака равенства для дальнейшего использования и, если после выражения не стоит точка с запятой, выводится на экран.
При записи нескольких операторов в одной строке следует использовать разделители.
При использовании операторов с неявным присваиванием система MATLAB автоматически создает переменную с именем ans и присваивает ей значение результата. Переменная ans сохраняет значение результата выполнения только последнего оператора с неявным присваиванием.
Длина буфера командной строки ограничена 256 символами. Если оператор настолько сложен, что полностью не помещается на одной строке, то следует ввести несколько точек (не менее двух), нажать клавишу ENTER и продолжить ввод оператора в следующей строке.
Вычисления в системе MATLAB ведутся в поле вещественных и комплексных чисел с двойной точностью.
Операторы системы MATLAB делятся на 3 категории:
арифметические операторы - позволяют конструировать арифметические выражения и выполнять числовые вычисления;
операторы отношения - позволяют сравнивать числовые операнды;
логические операторы – позволяют строить логические выражения. Логические операторы имеют самый низкий приоритет относительно
операторов отношения и арифметических операторов.
+ - * / \ ^ ‘ Арифметические операторы
При работе с массивом чисел установлены следующие уровни приоритета среди арифметических операций:
уровень 1: Поэлементное транспонирование (.’), поэлементное возведение в степень (.^), эрмитово сопряженное транспонирование матрицы (‘), возведение матрицы в степень (^);
уровень 2: Унарное сложение (+), унарное вычитание (-); уровень 3: Умножение массивов (.*), правое деление (./), левое деление
массивов (.\), умножение матриц (*), решение систем линейных уравнений - операция (/), операция (\);
уровень 4: сложение (+), вычитание (-); уровень 5: оператор формирования массивов (:).
Внутри каждого уровня операторы имеют равный приоритет и вычисляются в порядке следования слева направо. Заданный по умолчанию порядок следования может быть изменен с помощью круглых скобок.
Арифметические операторы системы MATLAB работают, как правило, с массивами одинаковых размеров. Для векторов и прямоугольных массивов оба операнда должны быть одинакового размера, за исключением единственного случая, когда один из них - скаляр. Если один из операндов скалярный, а другой нет. в системе MATLAB принято, что скаляр расширяется до размеров второго операнда и заданная операция применяется к каждому элементу. Такая операция называется расширением скаляра.
< <= > >= ~= = = |
Операторы отношения |
В системе MATLAB определено 6 следующих операторов отношения:
<меньше;
<= меньше иди равно;
>больше;
>= больше или равно; = = равно тождественно; ~= не равно.
Операторы отношения выполняют поэлементное сравнение двух массивов равных размерностей. Для векторов и прямоугольных массивов оба операнда должны быть одинакового размера, за исключением случая, когда один из них скаляр. В этом случае MATLAB сравнивает скаляр с .каждым элементом другого операнда. Позиции, где это соотношение истинно, получают значение 1, где ложно - 0.
Операторы отношения, как правило, применяются для изменения последовательности выполнения операторов программы. Поэтому они чаще всего используются в теле операторов if, for, while, switch. Операторы отношения всегда выполняются поэлементно.
Операции сравнения <, <=, >, >= используют для сравнения только действительной части комплексных чисел; операции = =, ~= осуществляют сравнение как действительных, так и мнимых частей.
& | ~ |
Логические операции |
В состав логических операторов системы MATLAB входят следующие операторы:
&И;
| ИЛИ;
~НЕ.
Логические операторы реализуют поэлементное сравнение массивов одинаковых размерностей. Для векторов и прямоугольных массивов оба операнда должны быть одинакового размера, за исключением случая, когда один из них скаляр. В последнем случае MATLAB сравнивает скаляр с каждым
элементом другого операнда. Позиции, где это соотношение истинно, получают значение 1, где ложно - 0.
Каждому логическому оператору соответствует некоторый набор условий, которые определяют результат логического выражения:
Логическое выражение с оператором AND (&) является истинным, если оба операнда истинны. Если элементами логического выражения являются числа, то выражение истинно, если оба операнда отличны от нуля.
Логическое выражение с оператором OR (|) является истинным, если один из операндов или оба операнда логически истинны. Выражение ложно, только если оба операнда логически ложны. Если элементами логического выражения являются числа, то выражение ложно, если оба операнда равны
нулю.
Логическое выражение с оператором NOT (~) строит отрицание. Результат логически ложен, если операнд истинен, и истинен, если операнд ложен. Если элементами логического выражения являются числа, то любой операнд, отличный от нуля, становится нулем, и любой нулевой операнд становится единицей.
xor, all, any, isnan, isinf |
Логические функции |
|
|
В дополнение к логическим операторам в состав системы MATLAB включен ряд логических функций:
хоr(а, b) реализует операцию ИСКЛЮЧИТЕЛЬНОЕ ИЛИ. Выражение, содержащее ИСКЛЮЧИТЕЛЬНОЕ ИЛИ истинно, если один из операндов имеет значение TRUE, а другой - FALSE. Для числовых выражений функция возвращает 1, если один из операндов отличен от нуля, а другой – 0;
all возвращает 1, если все элементы вектора истинны или отличны от
нуля;
any возвращает 1, если хотя бы один из элементов аргумента отличен от нуля; иначе возвращается 0. В случае обработки массивов функция any является столбцовоориентированной;
isnan и isinf возвращают 1 если аргументом функции являются переменные, имеющие значения соответственно в NaN и Inf;
isfinite истинна только для величин, которые не имеют значений inf или NaN (т.е. истинна для всех числовых значений аргумента).
Допустимо использование функций И, ИЛИ и НЕ в явном виде : and, or, not. Аргументами логических операторов могут быть числа и строки, при этом за 1 принимается любое числовое значение, отличное от 0.
Полный список логических функций системы MATLAB содержится в каталоге ops.
|
[] |
() = ‘ . , ; : % ! |
|
Специальные символы |
|
|
|||||
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
||||||
|
[ ] |
|
Квадратные |
|
Формирование векторов и матриц; |
||||||
|
|
|
скобки |
|
указание |
последовательности |
выходных |
||||
|
|
|
|
|
параметров при обращении к функциям, |
||||||
|
|
|
|
|
возвращающим более одного параметра |
||||||
|
( ) |
|
Круглые скобки |
|
Указание порядка выполнения операций в |
||||||
|
|
|
|
|
арифметических выражениях; |
|
|
|
|||
|
|
|
|
|
указание индексов элемента вектора, |
||||||
|
|
|
|
|
матрицы, массива; |
|
|
|
|
|
|
|
|
|
|
|
указание |
последовательности |
входных |
||||
|
|
|
|
|
параметров функции |
|
|
|
|
||
|
= |
|
Знак |
|
Знак присваивания |
в арифметических |
|||||
|
|
|
присваивания |
|
выражениях |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
‗ |
|
Транспонировани |
Транспонирование, |
сопровождаемое |
||||||
|
|
|
е матриц |
|
комплексным сопряжением для комплексных |
||||||
|
|
|
|
|
матриц |
|
|
|
|
|
|
|
. |
|
Разделитель |
- |
Десятичная точка; |
|
|
|
|
||
|
|
|
точка |
|
поэлементное |
выполнение |
операций над |
||||
|
|
|
|
|
массивом данных |
|
|
|
|
|
|
|
.. |
|
|
|
Переход по дереву каталогов на один |
||||||
|
|
|
|
|
уровень вверх |
|
|
|
|
|
|
|
… |
|
|
|
Признак продолжения строки |
|
|
||||
|
, |
|
Разделитель |
– |
Указание индексов элемента вектора, |
||||||
|
|
|
запятая |
|
матрицы, массива; |
|
|
|
|
|
|
|
|
|
|
|
отделение операторов языка MATLAB |
||||||
|
; |
|
Разделитель |
– |
Отделение строк матриц или массивов; |
||||||
|
|
|
точка с запятой |
|
подавление вывода на экран результатов |
||||||
|
|
|
|
|
вычислений |
|
|
|
|
|
|
|
: |
|
Разделитель |
– |
Заголовок цикла for; |
|
|
|
|
||
|
|
|
двоеточие |
|
формирование векторов, выделение строк, |
||||||
|
|
|
|
|
столбцов подблоков массива |
|
|
|
|||
|
% |
|
Указатель |
|
Указатель логического конца строки. |
||||||
|
|
|
|
|
Следующий |
за |
ним |
текст |
игнорируется |
||
|
|
|
|
|
(является комментарием) |
|
|
|
|
||
|
! |
|
Указатель |
|
Является указателем ввода команды DOS |
i или j |
Мнимая единица |
|
|
Константам i и j первоначально присваивается значение, равное sqrt(-1). Они используются для ввода комплексных чисел.
Числа 3+2i, 3+2*i, 3+2j представляют одно и тоже комплексное число.
inf |
Бесконечность |
Inf – специальная переменная, позволяющая фиксировать переполнение разрядной сетки ЭВМ. Этот механизм очень редко предоставляется пользователю для работы, однако в системе MATLAB это обеспечено благодаря возможностям арифметического сопроцессора.
Например, при выполнении деления на нуль машина выдаст сообщение
Warning: Divide by zero ans = Inf.
NaN |
Нечисловое значение |
NaN – специальная переменная, принятая в стандарте IEEE-арифметики, которая позволяет фиксировать результат, не представимый в виде числа. Следующие операции имеют результат в виде переменной NaN:
умножение вида 0*Inf;
деление вида 0/0 и Inf/Inf;
сложение и вычитание бесконечностей, например (+Inf) – (-Inf);
вычисление функций остатка rem(x, y) для y = 0 или x = Inf;
любые арифметические операции с переменной NaN.
pi |
Число (3.1415926535897…) |
|
|
Константа, рассчитываемая по одной из формул: pi = 4*atan(1) = imag(log(-1)) = 3.1415926535897…
eps |
Машинная точность |
|
|
Переменная eps определяет относительную точность операций с плавающей точкой, которая часто используется для оценки сходимости итерационных методов. Машинная точность eps – это наименьшее число, для которого на данной ЭВМ выполняется соотношение 1.0 + eps > 1.0. Стандартное значение этой переменной составляет 2.220446e-016. Пользователь имеет право назначить этой специальной переменной любое значение, включая 0.
realmax, |
Наименьшее и наибольшее положительные |
realmin |
числа с плавающей точкой |
realmax – наибольшее число с плавающей точкой для данного компьютера; любое большее значение соответствует переменной Inf.
|
realmin – наименьшее нормализованное положительное число с |
плавающей точкой для данного компьютера. |
|
|
Стандартные значения этих констант соответственно равны: |
|
Realmax = 1.797693134862316е+308; |
|
Realmin = 2.225073858507202е-308. |
|
|
find |
Поиск индексов и значений элементов массива по |
|
заданному условию |
Функция find определяет индексы элементов массива, которые удовлетворяют заданному логическому условию. Как правило, она используется с целью создания шаблонов для сравнения и образования массивов индексов. В наиболее употребительной форме функция к = find(x <условие>) возвращает вектор индексов тех элементов, которые удовлетворяют заданному условию,
А= magic(4)
А=
16
5
9
4
k = find(A > 8); |
|
||
A(k) = 100 |
|
|
|
100 |
2 |
3 |
100 |
5 |
100 |
100 |
8 |
100 |
7 |
6 |
100 |
4 |
100 |
100 |
1 |
Функция вида [i, j] = find(x) позволяет получить индексы ненулевых элементов прямоугольного массива.
Функция вида [i, j. s] = find(x) возвращает, кроме того, и их значения в виде вектора s.
1. 5. Элементарные математические функции
Элементарные математические функции, пожалуй, наиболее известный класс функций системы MATLAB. Поэтому, не останавливаясь подробно на их описании, представим перечень имеющихся функций.
sin |
синус |
sinh |
гиперболический синус |
asin |
арксинус |
asinh |
гиперболический арксинус |
cos |
косинус |
cosh |
гиперболический косинус |
acos |
арккосинус |
acosh |
гиперболический арккосинус |
tan |
тангенс |
tanh |
гиперболический тангенс |
atan |
арктангенс |
atan2 |
арктангенс вещественных частей двух векторов |
atanh |
гиперболический арктангенс |
sec |
секанс |
sech |
гиперболический секанс |
asec |
арксеканс |
asech |
гиперболический арксеканс |
csc |
косеканс |
csch |
гиперболический косеканс |
acsc |
арккосеканс |
acsch |
гиперболический арккосеканс |
cot |
котангенс |
coth |
гиперболический котангенс |
acot |
арккотангенс |
acoth |
гиперболический арккотангенс |
log |
натуральный логарифм |
log10 |
логарифм по основанию 10 |
log2 |
логарифм по основанию 2 |
pow2 |
2 в степени аргумента функции |
sqrt |
корень квадратный |
abs |
модуль аргумента (в том числе и комплексного) |
angle |
значение фазы комплексного аргумента |
conjugate |
комлексно-сопряженное значение комплексного аргумента |
imag |
мнимая часть комплексного аргумента |
real |
действительная часть комплексного аргумента |
fix |
округление аргумента в сторону ―0‖ |
floor |
округление аргумента в сторону |