Иногда случается, что нужно сделать несколько однотипных графиков, и при ручном выставлении одинаковых названий графиков, подписей осей, границ осей, легенды возникает устойчивое желание бросить программировать. В таких случаях удобно создать скрипт, который сам будет выставлять нужные подписи на любое количество одинаковых графиков.
Следующие команды пишутся после выведения графиков
Добавление легенды (название каждой линии, если их несколько):
legend('линия1','линия2', 'линия3');
Или
legend('линия1','линия2', -1);
если линий несколько, но нужно подписать все кроме последней (чтобы линия стала последеней достаточно её plot() вызвать последним)
Все остальные настройки можно посмотреть здесь:
https://www.mathworks.com/help/matlab/ref/legend-properties.html
Название графика
title('The graphic of sin(x) function');
Подписи осей
xlabel('The coordinate of Ox');
ylabel('The coordinate of Oy');
Просто текст посреди графика
text(3.05,0.16,'\leftarrow sin(x)');
где 3.05 - координата по х, 0.16 - по y, \leftarrow - зарезервированное слово, которое нарисует стрелочку (такие символы начинаются на \), sin(x) - сам текст
|
|
Диапазон осей
axis([ xmin, xmax, ymin, ymax ]);
Выделение информации из сохранённых графиков
Графики в формате.fig содержат массивы точек, которые отображены на этом графике. Для того, чтобы восстановить данные необходимо открыть график (перетащить график в окно Matlab или ввести open('example.fig');),
Ввести команды:
h = gcf; % получение handle графика
axesObjs = get(h, 'Children'); % получение объектов графика
dataObjs = get(axesObjs, 'Children');
xdata = get(dataObjs, 'XData'); % XData - название массива данных, сохранённых в.fig по оси х
ydata = get(dataObjs, 'YData'); % YData - название массива данных, сохранённых в.fig по оси y. Есть ещё ZData
На выходе xdata - массив с точками по оси Х, ydata - массив точек по оси Y.
Тригонометрические функции
Вычисляются как обычные функции, аргумент - угол в радианах.
sin(x) % синус
asin(x) % арксинус
cos(x) % косинус
acos(x) % арккосинус
tan(x) % тангенс
atan(x) % аргтангенс
cot(x) % котангенс
acot(x) % арккотангенс
Например,
var = cos(3.14)
Результат: var = -1.0000.
Переменная пи уже объявлена в матлабе и вызывается как pi.
Функции
Функция - подпрограмма, выполняющая заложенный в неё код. Создаются функции аналогично скриптам - New -> function. Начинается с кодового слова function и заканчивается end'ом (при создании функции по умолчанию эта заготовка уже есть).
Нужно различать определение и вызов функций. Определение — это описание кода функции; вызов функции — использование из кода сторонней программы.
Первая строка определения будет выглядеть так:
function [ output_args ] = untitled(input_args)
output_args в квадратных скобках - выходные переменные - то, что функция возвратит после выполнения. untitled здесь - название функции, input_args - входные аргументы.
|
|
Например, пусть необходимо создать функцию, которая будет складывать два числа и возвращать результат. В таком случае входных аргумента два - два складываемых числа (пусть будут называться A и B). Выходной аргумент один - результат сложения (будет называться C). Название необходимо поменять на что-нибудь понятное (будет называться func_sum). Тогда код такой функции будет выглядеть так:
function [ C ] = func_sum(A, B)
C = A + B;
end
После этого функцию необходимо сохранить. При сохранении учитывается название функции, в моём случае файл будет называться func_sum.m
При вызове функции само слово function уже не нужно, так же как и квадратные скобки выходных значений ежели таковой всего один или отсутствует. Названия входных и выходных значений в определении и вызове функции могут не совпадать, совпадать должны только типы — т.е. ежели входной аргумент называется А и в коде функции с переменной А производятся действия как числовой переменной, то и при вызове входной аргумент также должен быть числовой переменной с любым названием.
Теперь для того, чтобы можно было вызывать эту функцию её необходимо скопировать в рабочий каталог. Вызов функции аналогичен любой другой встроенной функции Matlab:
sum = func_sum(2,3) % складывает 2 и 3
В результате функция возвращает одну переменную, присваиваемую переменной sum:
sum =
5
Зачем нужны функции - для удобства. Иногда разные программы содержат одинаковые участки кода, тогда этот код можно объединить в функцию, написать один раз и во всех последующих случаях просто вызывать эту функцию. Минусом такого подхода является то, что файл с функцией нужно копировать в папку с каждой программой, которая будет её использовать (на самом деле есть способ это обойти - добавлять в переменную пути расположение файла с функцией, но это будет позже).
Например, в случае с данными газоаналитического чипа в функцию можно выделить процедуру чтения файла с данными, тогда входным аргументом удобно сделать путь до файла, выходным - массив с данными (или несколько массивов для каждого класса).
Случайные числа
Ежели требуется создать собственный массив данных (для тестирования, например), можно делать это с помощью функции rand(), которая создаёт случайное число в интервале от 0 до 1 используя равномерный закон распределения. Кроме того, есть ещё функция randn(), которая делает то же самое, но с нормальным законом распределения, диапазон здесь примерно от -2 до +2 с наиболее вероятными значениями в области нуля. (ну как и должно быть в нормальном распределении)
Обе функции могут принимать аргументы. Если это одно число n - создаётся массив размерностью n x n. Если два числа m и n - то размерности m x n.
Для изменения диапазона результат умножают на соответствующее значение. Например, для создания случайных цифр в диапазоне 0 - +10 умножить на 10: 10*rand();
Для создания в диапазоне -5 - +5 умножить на 10 и вычесть 5: 10*rand()-5;