Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 1804

.pdf
Скачиваний:
9
Добавлен:
30.04.2022
Размер:
2.24 Mб
Скачать

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

Когда содержимое рабочей области сохраняется в 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.

2 3 13
11 10 8
7 6 12
14 15 1

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

округление аргумента в сторону