Практикум 1.2. Операции в OCTAVE

1.2. Операции в OCTAVE Цель: изучить базовые операции в Octave.

Задачи: 1) освоить базовые операции;

  • 2) научиться производить вычисления;
  • 3) научиться работать с циклами и строить графики.

Ход выполнения:

Базовые операции

Основные языки, используемые для машинного обучения: Python, Ruby, MATLAB, Octave.

Язык Octave - скриптовый язык высокого уровня, обладающий высокой скоростью компиляции и большим функционалом. Приложение Octave является бесплатным и лежит в открытом доступе в сети Интернет (https://www.gnu.org/software/octave/download.html).

Функциональность Octave большая, в данном пособии приведены основные команды с описаниями. Весь набор команд можно посмотреть в инструкциях на официальном сайте https://www.gnu.org/software/octave/doc/interpreter/

Таблица 1.1 - Арифметические операции

Операнд

Определение

+

Сложение

-

Вычитание

/

Деление

*

Умножение

л

Возведение в степень

Таблица 1.2 - Логические операции

Операнд

Определение

==

Равно

~=

Не равно

&&

Логическое

"И"

II

Логическое

"ИЛИ"

хог(х, у)

Сумма по модулю два

>

Больше

<

Меньше

>=

Больше или равно

<=

Меньше или равно

А = pi; - пример операции присвоения, знак запрещает вывод результата команды на экран, число п здесь представлено символами “pi”.

С=(3>=1)-в результате данной команды на экран будет выведено следующее:

С = 1 (так как 3 >= 1, истинно)

Функция отображения текущего значения переменной:

disp(A )

Функция отображения имеет несколько параметров:

disp(sprintf( f 2 знака после запятой: %0.2f J, А ) )

Результатом такой команды будет строка “2 знака после запятой: ” и значение числа А, с двумя знаками после запятой.

Язык поддерживает несколько форматов переменных, с различной точностью:

short - 4 знака после запятой, float - 8, double - 12, long - 14.

Важной особенностью Octave являются операции с матрицами и векторами. Матрицы можно заполнять вручную:

А= [1} 2; 3^ 4; 5} 6] - через запятую перечисляются значения строки, знак точки с запятой означает переход к следующей строке, в результате будет выведена следующая матрица:

  • 1 2 3 4
  • 5 6

Матрицы можно заполнять не только вручную:

V = 1:0.2:2 - в результате матрица V будет равна [ 1, 1.2, 1.4, 1.6, 1.8, 2 ].

Здесь значение 0.2 означает шаг заполнения. Команду можно использовать без шага заполнения, в таком случае шаг будет равен единице:

V = 1 : 3 =>V = [ 1, 2, 3 ]

Есть несколько команд, автоматически создающих матрицы специального вида, с такими командами можно сочетать другие операнды для создания необходимых матриц:

С = ones(2j 3) - создание единичной матрицы размером две строки на три столбца.

С = 2 * ones(2J 3)-матрица, два на три, где все элементы равны двум.

С = zeros(x, у)- матрица размера “х” строк на “у” столбцов, где все элементы равны нулю.

С = еуе(х) - матрица размера “х” строк на “х” столбцов, с единицами в главной диагонали.

ю

С = magic (х) - матрица размера “х” строк на “х” столбцов, в которой сумма значений по строкам равна сумме значений по столбцам и сумме значений по диагоналям.

С = rand (х, у) - матрица размера “х” строк на “у” столбцов, где все элементы равны случайному значению от 0 до 1, с равномерным распределением вероятности.

С = randn(x, у) - матрица размера “х” строк на “у” столбцов, где все элементы равны случайному значению от -1 до 1, с гауссовским вероятностным распределением, математическим ожиданием равным нулю и стандартным отклонением равным единице.

1л1 = sqrt( 10 ) * randn( 1у 10000 ) - результатом команды будет вектор из 10000 столбцов, умноженный на квадратный корень из десяти.

hist(W ) - результатом команды будет гистограмма из 10 прямоугольников, после “W”, через запятую можно обозначить необходимое число прямоугольников, на рисунке 1.9 показан пример вывода гистограммы.

hist( W, 50 ) =>

Гистограмма, построенная в Octave

Рисунок 1.9 - Гистограмма, построенная в Octave

Имеется возможность вывода подсказок в диалоговом окне: help “ команда, по которой необходима справка ”.

и

Работа с данными

Пусть А - матрица размера “X” на “Y”

Sz = size (А ) - переменная “Sz” примет значения размерности матрицы “А”, то есть тоже будет матрицей =>Sz = [ X, Y ].

Ln = length ( А )- переменная “Ln” примет значение “X” или “Y”, в зависимости от того, что больше.

pwd - вывод текущей директории на экран.

addpath( fC: Users...J )- добавление папки или файла, для использования дополнительных функций (библиотек).

Is - показ всех файлов и папок в текущей директории.

loadf ile. dat - загрузка файла в область видимости Octave.

Savehello. mat - сохранить файл.

exitquit - закрыть Octave.

who - отобразить все переменные, которые сейчас используются.

whos - отобразить все переменные, которые сейчас используются, с деталями.

с lea г А - удаление переменной А из памяти.

V = 1л1( 1:10 )-матрица “V” получит значения матрицы “W”, с первой по десятую строку.

V( 3j 2) - указать на V32 элемент матрицы.

V( 2, : ) - вывести все элементы второй строки.

V ( : у 2 ) - вывести все элементы второго столбца.

V( [ 1} 3 ], :) - вывести все элементы, чей индекс содержит 1 или 3.

V( 2 ) = [ 10; 11; 12 ]-присвоить второму столбцу значения

10, 11, 12.

V = [V, [ 100; 101; 102 ] ]-добавление столбца справа, со значениями 100, 101, 102.

V ( : ) - отобразить все значения матрицы “V” в один столбец.

С = [ А, В ]- соединить матрицы следующим образом: [ [А], [В]]

гул

С = [ А; В ] - соединить матрицы следующим образом: г ,

Вычисления

А * В - перемножение матриц по правилам линейной алгебры.

А . * В - поэлементное перемножение матриц.

Оператор точка перед операндом, превращает операцию в ту же операцию, но с поэлементной реализацией.

log (А ) - функция возвращает матрицу натуральных логарифмов от каждого элемента матрицы “А”.

exp (А) - функция возвращает экспоненту, возведенную в степень “А”. Является поэлементной.

abs(A) - поэлементное взятие матрицы по модулю.

V = V + ones(length( V ), 1 )-увеличение всех значений матрицы “V” на единицу.

А' - операция транспонирования.

max (А) - возвращает строку матрицы “А”, в которой каждый элемент равен максимальному значению столбца.

min (А) - возвращает строку матрицы “А”, в которой каждый элемент равен минимальному значению столбца.

А < 3 - поэлементная логическая операция, выводящая единицу, если текущее значение матрицы меньше трех.

3i I4

Номера элементов идут по столбцам: 42 65

43 26

f ind (А< 3 ) - операция выведет индексы значений матрицы, которые меньше трех.

[ г, с ] = find( А >= 7 )-операция присвоит значениям вектора “г” индексы строк, а вектор “с” будет равен индексам по столбцам, sum (А) - просуммировать все значения матрицы “А”, prod (А) - перемножить все значения матрицы “А”, floor (А) - округлить все значения матрицы вниз до целого значения. ceil(A) - округлить все значения матрицы вверх до целого значения. sum( sum( А .* eye(size(A) ) ) )-операция сложения элементов главной диагонали квадратной матрицы.

f lipud(A) - операция переворота матрицы. pinv(A) - операция взятия обратной матрицы.

Построение графиков

Пример:

t = [ 0 : 0.01 : 0.98 ]; yl = sin(2 * pi * 4 * t);

plot(tj yl, r b *);- операция построения графика, где “t” - ось абсцисс, a “yl” - ось ординат, ‘ b ’ - blue (голубой), цвет графика.

Пример графика, построенного в Octave, представлен на рисунке 1.10.

Пример построения графика в Octave

Рисунок 1.10- Пример построения графика в Octave

holdon - команда, позволяющая построить новый график поверх старого, xlabel / ylabel( "подпись" )- функции, позволяющие подписывать соответствующие оси координат.

legend( 'sin-*, ‘cos* )-функция, выводящая легенду на график. title( 'заголовок* ) - вывод заголовка на график, close - закрытие окна графиков.

А = magic(5);

images с (А) - выводит матрицу цветов на график, на рисунке 1.11 показан пример цветовой матрицы magic(5).

Пример графика цветовой матрицы Работа с циклами

Рисунок 1.11- Пример графика цветовой матрицы Работа с циклами

А = 1, b = 2 у с = 3 - последовательное выполнение нескольких команд.

Примеры цикла “for”:

For i = 1 : 10 v(i) = 2 Л i;

end - цикл, выводящий степени двойки с 1 до 10.

index = 1 : 10; for i = index disp(i);

end - цикл, выводящий числа от 1 до 10.

Пример цикла “while”:

i = i;

while i<= 5; v(i) = 100; i = i + 1;

end - цикл, заполняющий вектор “v” значениями равными 100. Бесконечный цикл “while ” с использованием условия: i = 1; while true v(i) = 99; i = i +1;

if i == 6; break;

end

end

break - оператор, выводящий из бесконечного цикла.

В директории ML.Lab-rab/labl откройте папку lab 1.2 и создайте m-файл и выполните следующие задания:

Задание 1.

Напишите функцию, позволяющую сложить элементы побочной диагонали квадратной матрицы.

Задание 2.

Постройте график cos(2 * pi * 4 * t), поверх графика sin(2 * pi * 4 * t). Задание 3.

Напишите программу, считающую сумму максимального и минимального элементов в массиве, если минимальных или максимальных значений несколько, суммировать все.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ   След >