Автор: Пользователь скрыл имя, 12 Ноября 2010 в 00:08, курс лекций
Переменные рабочего пространства. Арифметические выражения. Типы данных. Скрипты и функции. Операторы MATLAB. Работа с файлами. Работа с текстовыми файлами.
Лекции
по MATLAB
Введение
MATLAB – продукт фирмы MathWorks.
Назначение – моделирование, анализ и визуализация динамических процессов.
Пакет MATLAB включает большое количество дополнительных компонент, например,
Целью
данных лекций является ознакомление
с некоторыми элементарными приемами
работы в MATLAB для получения возможности
быстрой и качественной подготовки отчетной
документации.
После запуска MATLAB на экране появляется комбинированное окно, состоящее из нескольких панелей (рис. 1): Окно команд (Command Window), История команд (Command History), Рабочее пространство (Workspace) и Текущий каталог (Current Directory). Далее, выполняя команды MATLAB, будем подразумевать их ввод в панель Окно команд. |
Рис. 1 Главное окно MATLAB |
Переменные рабочего пространства
Все переменные, используемые в вычислениях MATLAB запоминает в рабочем пространстве. На имя переменной накладываются следующие ограничения:
Команды, часто используемые для работы с рабочим пространством:
who | вывод списка имен всех переменных рабочего пространства |
whos | вывод подробной информации об именах переменных, их размерности, занимаемой памяти в байтах, типе данных |
clear | удаление всех переменных рабочего пространства |
clear x y | удаление только переменных x и y |
Название MATLAB является сокращением названия Matrix Laboratory (матричная лаборатория). Поэтому основной вид данных в MATLAB – массивы. Скалярные переменные рассматриваются как массивы 1x1, но при обращении к ним индекс можно опускать. Например, для присвоения переменной x значения 2 нужно написать:
>>x=2
При этом MATLAB после каждой введенной команды выводит результат ее выполнения. В данном случае в окно команд будет выведено:
x=
2
Для подавления автоматического вывода результата в конце строки нужно поставить точку с запятой:
>>x=2;
Для инициализации вектора введите числа в квадратных скобках через пробел:
>>a=[15 4]
a=
15 4
Для
ввода двумерной матрицы
>>b=[1 2; 3 4]
b=
1 2
3 4
Обращение к элементам массивов осуществляется через круглые скобки, например
>>b(2,1)
ans=
3
Если в левой части от знака равно ничего не указано, то система присвоит результат системной переменной ans и выведет ее значение в окно команд.
Матрицы могут содержать и символы:
>>s=['ABCDEF'; '12345'];
При
этом длины всех элементов массива
должны быть одинаковыми (нужно дополнять
пробелами справа строки, в которых
символов меньше), так как такой массив
рассматривается как двумерный массив
символов.
Арифметические выражения
Некоторые свойства вещественных переменных
>>x=1/0
Warning: Divide by zero.
x=
Inf
>>z=0/0
Warning: Divide by zero.
z=
NaN
eps | относительная погрешность при вычислениях с плавающей точкой (2.2e-6) |
realmax | наибольшее
положительное число с |
realmin | наименьшее
положительное число с |
pi | число π |
Комплексные числа
Мнимая часть в записи числа сопровождается символом i либо j:
>>z=1.5-0.5i;
Функции для работы с комплексными числами:
real(z) | действительная часть |
imag(z) | мнимая часть |
complex(u,v) | составление комплексного числа по 2-м вещественным |
conj(z) | сопряженное число (можно использовать апостроф: >>z') |
abs(z) | для формы записи z=peiφ возвращает значение p |
angle(z) | для формы записи z=peiφ возвращает значение φ |
Матрицы
Для задания вектора-строки [1xN] используются квадратные скобки, в которых данные отделены пробелами или запятыми:
>>y=[1 2 3];
Для задания вектора-столбца [Nx1] в качестве разделителей используются точки с запятой:
>>b=[1; 4; 2];
Комбинируя оба подхода, можно задать двумерный массив:
>>a=[1 -1 1; 2 0 2; 0 1 1];
Пример. Для нахождения корней СЛАУ достаточно написать
>>x=inv(a)*b
x=
1
1
1
Обращение к элементам массива через круглые скобки, нумерация индексов с 1:
>>a(2,3)
Для выполнения однотипных операций над элементами массива можно использовать диапазон:
>>z(2:5)=3
z=
0 3 3 3 3
Формирование типовых матриц
zeros | заполнение прямоугольной
матрицы нулями
>>a=zeros(5) – заполнится нулями матрица 5x5 >>a=zeros(3,4) – заполнится нулями матрица 3x4 |
ones | заполнение
прямоугольной матрицы |
eye | создание единичной прямоугольной матрицы (единицы по диагонали, остальные элементы – нули) |
rand | заполнение случайными величинами с равномерным распределением |
randn | заполнение случайными величинами с нормальным распределением |
Объединение матриц по вертикали:
>>a=[1 2; 3 4]
>>b=[5 6; 7 8]
>>c=[a; b]
c=
1 2
3 4
5 6
7 8
При подготовке табличных данных часто пользуются диапазонной записью:
>>x=[0:0.2:1]
x=
0 0.2000 0.4000 …. 1.0000
Практически все функции MATLAB обрабатывают векторные аргументы:
>>y=sin(x)
y=
0 0.1987 0.3894 ….0.8415
Арифметические
и логические операции
+ | покомпонентное
сложение числовых массивов одинаковой
размерности
добавление скалярной величины к каждому элементу массива |
- | покомпонентное
вычитание числовых массивов одинаковой
размерности
вычитание скалярной величины из каждого элемента массива |
* | умножение матриц в соответствии с правилами линейной алгебры (число столбцов первого сомножителя должно быть равно числу строк второго сомножителя) |
.* | покомпонентное умножение элементов массивов одинаковой размерности |
/ | деление скаляра
на скаляр
покомпонентное деление всех элементов массива на скаляр |
./ | покомпонентное деление элементов массивов одинаковой размерности |
\ | левое матричное деление A\B=A-1*B |
.\ | A.\B – покомпонентное деление элементов B на A (левое поэлементное деление) |
^ | возведение скаляра
в любую степень
вычисление целой степени квадратной матрицы |
' | вычисление сопряженной матрицы |
.' | транспонирование матрицы |
= = | проверка на равенство |
~= | проверка на неравенство |
> | проверка на больше |
>= | проверка на больше или равно |
< | проверка на меньше |
<= | проверка на меньше или равно |