Автор: Пользователь скрыл имя, 12 Ноября 2010 в 00:08, курс лекций
Переменные рабочего пространства. Арифметические выражения. Типы данных. Скрипты и функции. Операторы MATLAB. Работа с файлами. Работа с текстовыми файлами.
Логические операции с массивами производятся над элементами с одинаковыми индексами. Результат операции – массив той же размерности, что и операнды, заполненный 0 и 1 в зависимости от исхода операции.
>>a=[1 2; 3 4];
>>b=[2 0; 5 1];
>>c=a>=b
c=
0 1
0 1
Элементарные функции
Ниже приведен выборочно небольшой список из стандартной библиотеки MATLAB.
cos, sin, tan, cot | соответствующие тригонометрические функции |
exp, log, sqrt | экспонента, логарифм, корень квадратный |
ceil | округление в сторону +∞ (до ближайшего большего целого) |
floor | округление в сторону -∞ (до ближайшего меньшего целого) |
fix | отбрасывание дробной части |
round | округление по математически правилам |
gcd | наибольший общий делитель |
lcm | наименьшее общее кратное |
sign(x) | знак аргумента: -1, если x<0; 0, если x=0; 1, если x>0 |
abs | модуль |
mod | остаток от деления с учетом знака делимого |
rem | остаток от деления |
Построение простейших графиков функций в декартовых координатах
Для
построения графика y=f(x) необходимо
сформировать вектор аргументов (x) и вектор
значений (y) и вызвать функцию plot:
>>x=[0:0.1:6.28]; >>y=sin(x).*exp(-x); >>plot(x,y) График функции sin(x)e-x будет отображен в отдельном окне (см. рис. 2). |
Рис. 2. Простейший график функции |
Для размещения нескольких графиков существует 2 способа.
Способ
1. Построить таблицы обеих
>>x1=[0:0.2:6.28];
>>y1=sin(x1);
>>y2=cos(x1);
>>plot(x1,y1,x1,y2)
Способ 2. Заблокировать создание нового графического окна вызовом функции hold
>>plot(x1,y1)
>>hold on
>>plot(x1,y2)
В 3-м аргументе функции plot можно задать цвет линии, тип маркера, стиль линии.
Цвета:
y | желтый | g | зеленый |
m | малиновый | b | синий |
c | циановый | w | белый |
r | красный | k | черный |
Стиль линии:
- | сплошная линия | -. | штрихпунктирная |
: | пунктирная линия | -- | штриховая |
Тип маркера:
. | жирная точка | d | ромбик |
o | кружок | v | треугольник с вершиной вниз |
x | косоугольный крестик | ^ | треугольник с вершиной вверх |
+ | прямоугольный крестик | < | треугольник с вершиной влево |
* | восьмиконечная снежинка | > | треугольник с вершиной вправо |
s | квадратик | p | пятиконечная звезда |
none | отсутствие маркера | h | шестиконечная звезда |
Например,
plot(x,y,':gd') отобразит график пунктирной
линией зеленого цвета с маркерами в виде
ромбиков.
Дополнительные настройки графика
title('Заголовок графика') – установка заголовка графика
xlabel('название оси X') – подпись оси X
ylabel('название оси Y') – подпись оси Y
grid on – нанесение координатной сетки
legend('sin','cos',4) – вывод легенды, 3-й аргумент – место вывода легенды может быть следующим:
-1 | легенда размещается вне поля графика, вверху справа |
0 | система выбирает лучшее место в поле графика, не перекрываемое данными |
1 | легенда размещается в правом верхнем углу (по умолчанию) |
2 | легенда размещается в левом верхнем углу поля графика |
3 | легенда размещается в правом нижнем углу поля графика |
4 | легенда размещается в левом нижнем углу поля графика |
Двойная оцифровка осей
Помогает,
если диапазон изменения аргументов
и значений функций не совпадает.
Используется функция plotyy. Для 1-й функции
ось X цифруется внизу, Y – слева, для 2-й
соответственно вверху и справа (рис. 3).
>>x=0:0.1:6.28; >>y1=sin(x); >>y2=sin(x)+cos(x); >>plotyy(x,y1,x,y2) |
Рис. 3. Двойная оцифровка осей |
Деление области рисования
Иногда необходимо отобразить в одном окне несколько графиков. Для этого служит функция subplot, разделяющая область рисования на несколько прямоугольных областей равного размера, расположенных подобно элементам матрицы:
subplot(row, col, cur),
где row – количество рядов, col – количество колонок, cur – порядковый номер подобласти, в которой очередная функция plot будет строить свой график.
>>
x=0:0.2:2*pi;
>> y1=sin(x); >> y2=cos(x); >> y3=y1.*exp(-x); >> y4=y1.*y2; >> subplot(2,2,1);plot(x,y1); >> subplot(2,2,2);plot(x,y2); >> subplot(2,2,3);plot(x,y3); >> subplot(2,2,4);plot(x,y4); |
Рис. 4. Деление области рисования |
Графическое окно, в котором отображается график содержит элементы управления, предоставляющие доступ к следующим функциям: масштабирование графика, экспорт в графический формат, изменение заголовка, легенд, стилей линий и т.д.
Типы данных
Символьные массивы
Символьные векторы (массивы размерности 1xn) – обычные строки. Задание – в правой части оператора присваивания записывают цепочку символов, заключенную в одинарные кавычки.
>>sv='abcdefgh
sv=
abcdefgh
Символьная матрица (массив размерности mxn) должна состоять из m строк равной длины n.
>>sm=['abcdefgh';'
sm=
abcdefgh
12345678
Полезные функции:
size(sv) | возвращает число строк и число столбцов массива sv |
length(sv) | возвращает количество символов |
ndims(sv) | возвращает количество измерений |
Целочисленные данные
В MATLAB предусмотрены функции конвертации вещественных типов в любой допустимый целый тип и наоборот.
int8 | преобразование в 1-байтовое целое со знаком | -128..127 |
uint8 | преобразование в 1-байтовое целое без знака | 0..255 |
int16 | преобразование в 2-байтовое целое со знаком | -32 768..32767 |
uint16 | преобразование в 2-байтовое целое без знака | 0..65535 |
int32 | преобразование в 4-байтовое целое со знаком | -2 147 483 648..2 147 483 647 |
uint32 | преобразование в 4-байтовое целое без знака | 0..4 294 967 295 |
double | преобразование
числового аргумента в формат
вещественного с удвоенной |
|
single | преобразование
числового аргумента в формат
вещественного с одинарной |
>>x=int16(12)
x=
12
Вызовом функции whos можно убедиться, что переменная x занимает 2 байта. Использование целочисленных данных экономит память и ускоряет операции.
Для
MATLAB стандартный тип по умолчанию – double.
Разреженные матрицы. Если в матрице содержится много нулей, то для экономии памяти используются разреженные матрицы.
>> a=eye(100);
>> b=sparse(eye(100));
>> whos
Name Size Bytes Class
a 100x100 80000 double array
b 100x100 1604 sparse array
Grand
total is 10100 elements using 81604 bytes
Массивы ячеек
Числовые массивы состоят из элементов одного типа. В массивах ячеек каждый элемент (ячейка) может быть любого типа. При задании используются фигурные скобки.
>> q={1 2 3}
q =
[1] [2] [3]
>> whos q
Name Size Bytes Class
q 1x3 300 cell array
Grand
total is 6 elements using 300 bytes
Каждый элемент массива ячеек q является матрицей. Доступ к элементам массива ячеек также через фигурные скобки.
>> w{1,1}='Text';
>> w{1,2}=3;
>> w{1,3}=eye(2);
>> w{1,4}=1+i;
>> w
w =
'Text' [3] [2x2 double] [1.0000+ 1.0000i]
Скрипты и функции
Скрипты – цепочки команд MATLAB, сохраненные в текстовый файл с расширением m, так называемый m-файл.
Особенности скриптов